如何获取TypeScript枚举条目的名称? [英] How does one get the names of TypeScript enum entries?
问题描述
我想知道如何迭代一个TypeScript枚举和每个枚举的符号名称。
例如,
enum myEnum {entry1,entry2}
for(var entry in myEnum){
//这里使用条目的名称,例如entry1
}
您发布的代码将会工作;它将列出枚举的所有成员,包括枚举成员的值。例如,以下代码:
枚举myEnum {bar,foo}
(var enumMember in myEnum){
console.log(enum member:,enumMember);
}
将打印如下内容:
枚举成员:0
枚举成员:1
枚举成员:bar
枚举成员:foo
如果您只想要成员名称而不是值,则可以执行以下操作:
for(var enumMember in myEnum){
var isValueProperty = parseInt(enumMember,10)> = 0
if(isValueProperty){
console.log(enum member:,myEnum [enumMember]);
}
}
这将只打印出名字:
枚举成员:bar
枚举成员:foo
注意事项:这稍微依赖于一个实现细节:TypeScript将枚举到一个JS对象,枚举值是该对象的成员。如果TS决定在将来实施它们不同,上述技术可能会破裂。I would like to know how to iterate a TypeScript enumeration and 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); }
Will print the following:
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]); } }
That will print out just the names:
Enum member: bar
Enum member: foo
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.
这篇关于如何获取TypeScript枚举条目的名称?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!