示例:
type X = 'a' | 'b';
const xVals = ??? X; // ['a', 'b']
反之亦然(从所有可能值的列表中获得一个类型,该类型是数组中所有这些值的并集)。
我的目标是仅将所有可能的值列出一次。
答案 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'