为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取枚举条目的名称?

如何获取枚举条目的名称?

如何获取枚举条目的名称?我想迭代一个TypeScript enum类型并获取每个枚举的符号名称,例如:enum myEnum { entry1, entry2 }for (var entry in myEnum) {      // use entry's name here, e.g., "entry1"}
查看完整描述

3 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

您发布的代码将起作用; 它将打印出枚举的所有成员,包括枚举成员的值。例如,以下代码:

enum myEnum { bar, foo }for (var enumMember in myEnum) {
   console.log("enum member: ", enumMember);}

将打印以下内容:

Enum member: 0Enum member: 1Enum member: barEnum member: foo

如果您只想要成员名而不是值,则可以执行以下操作:

for (var enumMember in myEnum) {
   var isValueProperty = parseInt(enumMember, 10) >= 0
   if (isValueProperty) {
      console.log("enum member: ", myEnum[enumMember]);
   }}

这将打印出名称:

Enum成员:酒吧

Enum成员:foo

警告:这稍微依赖于实现细节:TypeScript将枚举值编译为JS对象,枚举值为对象的成员。如果TS决定将来实施它们不同,上述技术可能会破裂。


查看完整回答
反对 回复 2019-08-19
?
GCT1015

TA贡献1827条经验 获得超4个赞

虽然已经提供了答案,但几乎没有人指出这些文档

这是一个片段

enum Enum {
    A}let nameOfA = Enum[Enum.A]; // "A"


查看完整回答
反对 回复 2019-08-19
?
慕森王

TA贡献1777条经验 获得超3个赞

假设您遵守规则并仅生成具有数值的枚举,则可以使用此代码。这正确地处理了您的名称恰好是有效数字的情况


enum Color {

    Red,

    Green,

    Blue,

    "10" // wat

}


var names: string[] = [];

for(var n in Color) {

    if(typeof Color[n] === 'number') names.push(n);

}

console.log(names); // ['Red', 'Green', 'Blue', '10']


查看完整回答
反对 回复 2019-08-19
  • 3 回答
  • 0 关注
  • 1106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信