如何获取联合类型的所有可能值到数组(或反过来)?

时间:2018-11-05 12:36:08

标签: typescript

示例:

type X = 'a' | 'b';
const xVals = ??? X; // ['a', 'b']

反之亦然(从所有可能值的列表中获得一个类型,该类型是数组中所有这些值的并集)。

我的目标是仅将所有可能的值列出一次。

1 个答案:

答案 0 :(得分:2)

您不能从类型转到值。您可以采用另一种方法,从可以获取类型的值开始。问题在于数组值['a', 'b']的类型为string[],字符串文字类型的并集将丢失。

使用函数以强制编译器为指定值推断字符串文字类型的解决方案:

function stringTuple<T extends [string] | string[]>(...data: T): T {
    return data;
}

let xValues = stringTuple('a', 'b') // typed as ["a", "b"]
type x = typeof xValues[number] // 'a' | 'b'