【发布时间】:2018-06-02 11:22:01
【问题描述】:
我一定遗漏了一些东西,但我找到了几种方法来遍历枚举而不是字符串枚举。
给出以下枚举:
export enum Locales {
En = 'en',
Fr = 'fr',
De = 'de',
Es = 'es',
It = 'it',
Nl = 'nl',
No = 'no',
Tr = 'tr',
}
我想要达到的目标:
我想迭代那个字符串枚举,以便获得值(!)。我试过的:
for (const key of Object.keys(Locales)) {
const locale: string = Locales[key];
console.log(locale); // Should print 'en', 'fr' and so on
}
上面代码的问题:
由于严格的 tsconfig(不允许隐式任何),我无法将其编译为 javascript。由于这不是我的项目,我也无法更改此 tsconfig。它突出显示了Locales[key] 处的key 变量,这个错误对我来说很有意义:
[ts] 元素隐含地具有“任何”类型,因为索引表达式是 不是“数字”类型。
问题:
使用 Typescript 2.6+ 迭代字符串枚举以获取其值的正确方法是什么?
【问题讨论】:
-
使用 - keyof typeof Locales - 将给出枚举成员的枚举类型,该类型可用于断言键的类型 - Locales[key as keyof typeof Locales]。
标签: node.js typescript