如何获取TypeScript枚举条目的名称? [英] How does one get the names of TypeScript enum entries?

查看:3310
本文介绍了如何获取TypeScript枚举条目的名称?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道如何迭代一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆