如何获取枚举条目的名称? [英] How to get names of enum entries?
问题描述
我想迭代一个 enum
类型的TypeScript并获取每个枚举的符号名称,例如:
I would like to iterate a TypeScript an enum
type and get each enumerated symbol name, e.g.:
enum myEnum { entry1, entry2 }
for (var entry in myEnum) {
// use entry's name here, e.g., "entry1"
}
推荐答案
您发布的代码可以使用;它将打印出枚举的所有成员,包括枚举成员的值。例如,以下代码:
The code you posted will work; it will print out all the members of the enum, including the values of the enum members. For example, the following code:
enum myEnum { bar, foo }
for (var enumMember in myEnum) {
console.log("enum member: ", enumMember);
}
将打印以下内容:
Enum member: 0
Enum member: 1
Enum member: bar
Enum member: foo
如果您只希望成员名称而不是值,则可以执行以下操作:
If you instead want only the member names, and not the values, you could do something like this:
for (var enumMember in myEnum) {
var isValueProperty = parseInt(enumMember, 10) >= 0
if (isValueProperty) {
console.log("enum member: ", myEnum[enumMember]);
}
}
这只会打印出名称:
Enum member: bar
Enum member: foo
注意:稍微依赖于实现细节:TypeScript将枚举编译为JS对象,而枚举值是该对象的成员。如果TS决定将来以不同的方式实施它们,则上述技术可能会失效。
Caveat: this slightly relies on an implementation detail: TypeScript compiles enums to a JS object with the enum values being members of the object. If TS decided to implement them different in the future, the above technique could break.
这篇关于如何获取枚举条目的名称?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!