HiveBrain v1.2.0
Get Started
← Back to all entries
snippettypescriptCritical

How to get names of enum entries?

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
enumhowentriesgetnames

Problem

I would like to iterate a TypeScript enum object and get each enumerated symbol name, for example:
enum myEnum { entry1, entry2 }

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

Solution

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 = Number(enumMember) >= 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.

Code Snippets

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

Context

Stack Overflow Q#18111657, score: 389

Revisions (0)

No revisions yet.