問題 オブジェクト型T、文字列型K、型Dが与えられたとき、「KがTのプロパティである場合はT[K]、そうでない場合はDを返す」型関数 ValueOrDefault<T,K extends string, D> は、Conditional Typesを使用すれば以下のように簡単に実装できます。 type ValueOrDefault<T, K extends string, D> = K extends keyof T ? T[K] : D; type T3 = ValueOrDefault<{ a: 1 }, "a", 1>; // 1 type T4 = ValueOrDefault<{ a: 1 }, "a", 2>; // 1 type T5 = ValueOrDefault<{ a: 1 }, "b", 2>; // 2 type T6 = ValueOrDefault<{ a: