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

46 浏览
0 Comments

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

我想要遍历一个TypeScript枚举对象并获取每个枚举符号的名称,例如:

enum myEnum { entry1, entry2 }

for (var entry in myEnum) { 
    // use entry's name here, e.g., "entry1"
}

admin 更改状态以发布 2023年5月21日
0
0 Comments

你发布的代码是有效的。它将打印出枚举的所有成员,包括枚举成员的值。例如,以下代码:

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

如果你只想要成员名而不需要值,你可以像这样做:

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

这将只打印出成员名:

Enum member: bar  
Enum member: foo

注意:这在某种程度上依赖于实现细节:TypeScript将枚举编译为具有对象成员的JS对象。如果TS在未来决定对它们进行不同的实现,上述技术可能会失效。

0
0 Comments

虽然答案已经给出,但几乎没有人指向文档

这里有一段片段

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

请注意,字符串枚举成员根本不会生成反向映射。

0