enumstypescript

How to get names of enum entries?


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.