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