Typescript類型體操 - IsUnion

題目

中文

實現一個 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;

在線演示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章