型と型が等しいかどうかを判定する
型TとUが等しいかどうかをConditional Typesを使って判定する。
元ネタ: https://twitter.com/Linda_pp/status/1128961748197756933
code:ts
type Equals<T, U> = T extends U ? U extends T ? true : false : false
// examples
type E1 = Equals<number, string> // false
type E2 = Equals<number, number> // true
type E3 = Equals<number, number | string> // false
type E4 = Equals<number | string, number> // false
type E5 = Equals<number | string, number | string> // true
try on playground