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;
コメント