この解答例はChatGPTによって生成されています,正しいかは自己判断で。
BFE.devでのAI解答例 - TypeScript タイプパズル
42. implement Equal<A, B>
type Equal<A, B> =
(<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ?
true :
false;
この実装では、引数の型が互いに代入可能である場合はtrue
を返し、代入可能でない場合はfalse
を返します。基本的に、AはBの派生クラスでなければなりません。
この実装では、条件式 <T>() => T extends A ? 1 : 2
の型は 1
または 2
であり、Bと同じ条件式と比較できます。TypeScriptコンパイラは、条件式の型は 1
か 2
のどちらかであり、条件式を最近優先するように解釈します。同じ型であれば条件が真となるので型判定が正しくなります。