この解答例は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
のどちらかであり、条件式を最近優先するように解釈します。同じ型であれば条件が真となるので型判定が正しくなります。