TypeScript 入門 Excludeを実装する

Excludeは以下のように実装されています。
type MyExclude<T, U> = T extends U ? never : T
これを使ってみると
type T1 = MyExclude<"a" | "b" | "c", "a"> //T1 は "b" | "c"
T1は“b" | “c"になります。
なぜそうなるのかというと、内部的には以下のようになっているからです。
type T1 = ("a" extends "a" ? never : "a") | ("b" extends "a" ? never : "b") | ("c" extends "a" ? never : "c")
知っていればわかるのですが、初見だと分からない動きかなと思います。
最近のコメント