🔤
TypeScriptジェネリクスパターン — Tが何か一発で理解する
関数/クラス/インターフェースで「後で決まる型」を使う方法
Tは「呼び出し時に決まる」。first([1,2,3]) → TypeScriptがT=numberと推論。
よく使うパターン
制約: <T extends HasId> — TがHasIdを満たす必要
keyof: <K extends keyof T> — KはTのキーの1つ
ユーティリティ型: Partial
type Partial<T> = { [K in keyof T]?: T[K] };
この1行が読めればTypeScriptジェネリクスを理解した証拠。
キーポイント
1
Tは「まだ分からない型」のプレースホルダー — 呼び出し時に決定
2
T extends Constraintで制約追加 — Tが満たすべき条件
3
keyof Tでオブジェクトのキーを型として抽出
4
Partial<T>、Pick<T,K>等のユーティリティ型はジェネリクス+mapped typeで実装
ユースケース
APIクライアント — fetch<T>(url): Promise<T>でレスポンス型自動推論
コンポーネントprops — Reactでgenericコンポーネント作成