題目
中文
實現一個 IsUnion
類型, 接受輸入類型 T
, 並返回 T
是否爲聯合類型.
type case1 = IsUnion<string>; // false
type case2 = IsUnion<string | number>; // true
type case3 = IsUnion<[string | number]>; // false
English
Implement a type IsUnion
, which takes an input type T
and returns whether T
resolves to a union type.
For example:
type case1 = IsUnion<string>; // false
type case2 = IsUnion<string | number>; // true
type case3 = IsUnion<[string | number]>; // false
答案
type IsUnion<T, K = T> = [T] extends [never]
? false
: T extends T
? [Exclude<K, T>] extends [never]
? false
: true
: false;