我在打字稿中定义了一个自定义文字类型:
export type Market = 'au'|'br'|'de';
现在,我想遍历每种可能的方法,Market
而不必首先创建一个数组,Market[]
因为它感觉很多余,我可能会忘记添加一个选项:
const markets: Market[] = ['au', 'br', 'de'];
markets.forEach((market: Market) => {
console.log(market);
});
有没有办法用打字稿实现呢?
不,您不能那样做,因为在运行时不存在类似的纯类型信息。
假设以另一种方式(定义一个正常的字符串列表,然后从中导出'au'|'br'|'de'
类型)是可行的,但是我认为TypeScript编译器(2.0或2.1)目前不会为您推断这一点。我知道市场类型永远都是string[]
正常的。
正确的答案是使用枚举。他们用它们的每个值定义一个类型,并且可以获得所有字符串值的列表:如何在Typescript 0.9.5中以编程方式枚举枚举类型?。
枚举的一个缺点是它们的运行时表示形式是不同的(实际上,它们实际上是数字,而不是字符串)。但是,您的代码仍然可以将它们视为可读性强的值,只是如果您在运行时需要将它们用作字符串名称,则必须将它们转换为字符串。不过,这很容易:给定enum MarketEnum
和一个value myEnumValue
,MarketEnum[myEnumValue]
即该值的名称(以字符串形式)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句