Skip to content

Instantly share code, notes, and snippets.

View akihisa-shimada's full-sized avatar

akihisa-shimada

View GitHub Profile
package com.example.proto.grpc.exception.message;
import com.google.protobuf.Message;
import io.grpc.Status;
import java.util.LinkedHashMap;
import java.util.Objects;
/**
* 特定のgRPCレスポンスのための例外クラスです。
package com.example.proto.grpc.exception.message;
import org.springframework.lang.Nullable;
import java.util.Locale;
/**
* テンプレート化されたメッセージの変換を扱います
*/
public interface MessageResolver {
package com.example.proto.grpc.exception.message;
import com.google.protobuf.Message;
import java.util.HashSet;
import java.util.Set;
/**
* DetailMessageのためのユーティリティクラス
package com.example.proto.grpc.exception.message;
import com.google.protobuf.Message;
import com.google.rpc.LocalizedMessage;
/**
* エラーメッセージの詳細を扱います
*/
public interface DetailMessage {
package com.example.proto.grpc.exception.message;
import com.example.proto.grpc.exception.message.DetailMessage;
import com.example.proto.grpc.exception.message.MessageResolver;
import com.google.protobuf.Message;
import io.grpc.Status;
import java.util.Collections;
import java.util.Set;
package com.example.proto.grpc.exception.message;
import io.grpc.Status;
/**
* 特定のgRPCレスポンスのための例外クラスです。
*
* @see org.springframework.web.server.ResponseStatusException
*/
public class ResponseStatusException extends RuntimeException {
package com.example.proto.grpc.exception.message;
import com.google.protobuf.Message;
import com.google.rpc.LocalizedMessage;
/**
* エラーメッセージの詳細を扱います
*/
public interface DetailMessage {
interface ExampleInterface<T, U> {
value1: T;
value2: U;
}
const obj: ExampleInterface<string, number> = { value1: '文字列', value2: 1 };
console.log(obj.value1); // 文字列
console.log(obj.value2); // 1
const functionA = <T, U>(bool: boolean, param1: T, param2: U): T | U => {
if (bool) return param1;
return param2;
}
const result1 = functionA(true, 1, '文字列');
const result2 = functionA(false, 1, '文字列');
console.log(result1) // 1
console.log(result2) // 文字列
const fetcher = async<T>(url: string): Promise<T> => {
const res = await fetch(url).then<T>(res => res.json());
return res;
}
export const getUser = async(): Promise<{id: number, name: string}> => {
const user = await fetcher<{id: number, name: string}>('https://example.com/api/user');
return user;
}