URL: https://www.progressiverobot.com/typescript-enums/

<^>Enums<^> are a TypeScipt data type that allow the organization of number-based collections of unique identifiers.

Here's how to define a simple enum:

				
					
enum Transport {

  train,

  bus,

  bike,

  car

}



let myTransport = Transport.bus;

console.log(myTransport); // 1

				
			

You can access an enum value by it's number value or by the string that's associated with it:

				
					
enum Students {

  Ann,

  Bob,

  John,

  Zed

}



console.log(Students['John']); // 2



console.log(Students[3]); // Zed

				
			

Enums are zero-based, but you can change that by setting a number value of your choice on the first item. Here for example our enum will have an index that starts with 1:

				
					
enum Tools {

  hammer = 1,

  screwdriver,

  saw,

  wrench

}



console.log(Tools.saw); // 3

				
			

Or you can skip to new values, and the next values will follow:

				
					
enum Tools {

  hammer,

  screwdriver,

  saw = 100,

  wrench

}



console.log(Tools.wrench); // 101

				
			

Because of this, you can add to enums in different files and can keep adding to the same enum:

				
					
enum Sports {

  Soccer,

  Football,

  Basketball,

}



// ...



// Later or in another file:

enum Sports {

  Swimming = 3,

  Running,

  Hockey

}

				
			

Enums become simple JavaScript objects and here's what the above <^>Sports<^> enum resulting object looks like, by calling JSON.stringify on it:

				
					
console.log(JSON.stringify(Sports, null, '\t'));

				
			
				
					
{

    "0": "Soccer",

    "1": "Football",

    "2": "Basketball",

    "3": "Swimming",

    "4": "Running",

    "5": "Hockey",

    "Soccer": 0,

    "Football": 1,

    "Basketball": 2,

    "Swimming": 3,

    "Running": 4,

    "Hockey": 5

}