Javascript Enum To Corresponding String Value Javascript Enum To Corresponding String Value javascript javascript

Javascript Enum To Corresponding String Value


Do you actually need the numeric values at all? If not then you could use something like this:

var TEST_ERROR  = {    SUCCESS  : 'Success',    FAIL     : 'Fail',    ID_ERROR : 'ID Error'};


Not quite optimal, but the cleanest you can get without pre-computing the reverse dictionary (and besides, this shouldn't be too much of an issue if you only have a few enumeration values):

function string_of_enum(enum,value) {  for (var k in enum) if (enum[k] == value) return k;  return null;}


For TypeScript, there is a simpler solution(Please ignore my answer if you stick with JS):

export enum Direction {    none,    left = 1,    right = 2,    top = 4,    bottom = 8}export namespace Direction {    export function toString(dir: Direction): string {        return Direction[dir];    }    export function fromString(dir: string): Direction {        return (Direction as any)[dir];    }}console.log("Direction.toString(Direction.top) = " + Direction.toString(Direction.top));// Direction.toString(Direction.top) = topconsole.log('Direction.fromString("top") = ' + Direction.fromString("top"));// Direction.fromString("top") = 4console.log('Direction.fromString("xxx") = ' + Direction.fromString("unknown"));// Direction.fromString("xxx") = undefined

Because the enumeration type is compiled into an object(dictionary).You don't need a loop to find the corresponding value.

enum Direction {    left,    right}

is compiled into:

{    left: 0    right: 1    0: "left",    1: "right"}