我有
type ImageVerticalSpacing = 'ignoreBottom' | 'ignoreTop' | 'ignoreBoth'
| 'Default';
在typescript中,需要将这些字符串作为字符串数组传递给下拉列表。 如何将ImageVerticalSpacing类型转换为字符串数组?
答案 0 :(得分:3)
您无法在运行时将TypeScript中的类型转换为值。但您可以反过来:创建一个运行时对象并让TypeScript推断其类型。
用于此目的的理想运行时对象是tuple。不幸的是,TypeScript本身并不能很好地推断元组。我使用一个名为tuple()
的辅助函数来返回元组类型。
更新:2018-12,自TypeScript 3.0以来tuple()
函数可以这样写:
type Narrowable = string | number | boolean | symbol |
object | {} | void | null | undefined;
const tuple = <T extends Narrowable[]>(...args: T)=>args;
使用上面的辅助函数,您可以这样做:
const imageVerticalSpacing = tuple('ignoreBottom','ignoreTop','ignoreBoth','Default');
type ImageVerticalSpacing = (typeof imageVerticalSpacing)[number];
imageVerticalSpacing
对象是一个可用于下拉列表的字符串数组,类型为['ignoreBottom','ignoreTop','ignoreBoth','Default']
。类型ImageVerticalSpacing
与您声明的'ignoreBottom' | 'ignoreTop' | 'ignoreBoth' | 'Default'
相同。
(在The Playground上查看)
希望有所帮助。祝你好运!