If
課題
条件 C、真の場合の返り値の型 T、偽の場合の返り値の型 F を受け取る If を
実装してください。C は true または false であることが期待されますが、T
と F はどんな型でも構いません。
例:
type A = If<true, "a", "b">; // expected to be 'a'
type B = If<false, "a", "b">; // expected to be 'b'
解答
TypeScript の Conditional 型を 使用するタイミングは、型に対して if 文を使用する必要がある場合です。まさしくここ で求められていることに合致します。
条件を表わす型が true である場合 true ブランチに、そうでない場合は false ブラ
ンチに入ります:
type If<C, T, F> = C extends true ? T : F;
しかしこのままでは、C に割り当てられる型は boolean 型のみであることを示す制約
がないため、コンパイルエラーが発生します。これに対処するため、型変数 C に
extends boolean を追加します:
type If<C extends boolean, T, F> = C extends true ? T : F;
コメント