例子:
type X = 'a' | 'b';
const xVals = ??? X; // ['a', 'b']
Run Code Online (Sandbox Code Playgroud)
或者相反(从所有可能值的列表中获取一个类型,该类型是数组中所有值的并集)。
我的目标是将所有可能的值仅列出一次。
您无法从类型转换为值。您可以采用另一种方式,从可以获取类型的值开始。问题是数组值['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'
Run Code Online (Sandbox Code Playgroud)
stringTuple作为@Titian 答案中函数的替代解决方案,从 TypeScript 3.4 开始,您可以使用const断言:
const xValues = ['a', 'b'] as const; // type: readonly ["a", "b"]
type X = typeof xValues[number]; // type: "a" | "b"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3381 次 |
| 最近记录: |