経緯・質問内容
Type Challengesの中の、Includesの解答を考えている中で、Equal型の実装について疑問が生じたので質問させて頂きました。
TypeScriptに組み込まれているEqual型について、実装は以下の様になっておりますが、これで型の一致を判定できる理由が分かりません。
typescript
1type Equal<X, Y> = <T>() => T extends X ? 1 : 2 extends <T>() => T extends Y ? 1 : 2 ? true : false
<T>() => T extends X ? 1 : 2
型、<T>() => T extends Y ? 1 : 2
型とはどのような型を表しているのでしょうか。
以下のようにした場合にどのような関数が代入できる型なのでしょうか。
typescript
1const func: <T>() => T extends X ? 1 : 2 = ???
試したEqual型の実装
以下は解答を考える中で私が試した内容ですが、こちらでReadonlyの判定がうまく行かない理由も合わせてご教示頂けるとありがたいです。
typescript
1type MyEqual<X, Y> = X[] extends Y[] ? Y[] extends X[] ? true : false : false;
あなたの回答
tips
プレビュー