Open4
タグ付きユニオンから型を抽出するユーティリティ型を作る
Extractを使ってもいいのかもと思い、少しデモを作ってみました。
type EndpointFoo = {
endpoint: "/api/foo/",
data: {
userName: string,
userId: string,
}
}
type EndpointBar = {
endpoint: "/api/bar/",
data: {
totalPost: number | bigint,
post: string[],
}
}
type EndpointBuzz = {
endpoint: "/api/buzz/",
data: {
orgName: string,
isPurchase: boolean,
}
}
type TaggedUnion = EndpointBar | EndpointFoo | EndpointBuzz;
type Tag = TaggedUnion['endpoint'];
type ExtractTaggedType<T extends Tag> = Extract<TaggedUnion, { endpoint: T }>;
type FooType = ExtractTaggedType<'/api/foo/'>;
demo code.
簡単ですが、以上です。
おっありがとうございます👀
参考にさせていただきます🙏