Tutorials References Exercises Videos Menu
Create Website Get Certified Upgrade

TypeScript Enums


An enum is a special "class" that represents a group of constants (unchangeable variables).

Enums come in two flavors string and numeric. Lets start with numeric.


Numeric Enums - Default

By default, enums will initialize the first value to 0 and add 1 to each additional value:

Example

enum CardinalDirections {
  North,
  East,
  South,
  West
}
let currentDirection = CardinalDirections.North;
// logs 0
console.log(currentDirection);
// throws error as 'North' is not a valid enum
currentDirection = 'North'; // Error: "North" is not assignable to type 'CardinalDirections'.
Try it Yourself »

Numeric Enums - Initialized

You can set the value of the first numeric enum and have it auto increment from that:

Example

enum CardinalDirections {
  North = 1,
  East,
  South,
  West
}
// logs 1
console.log(CardinalDirections.North);
// logs 4
console.log(CardinalDirections.West);
Try it Yourself »

Numeric Enums - Fully Initialized

You can assign unique number values for each enum value. Then the values will not incremented automatically:

Example

enum StatusCodes {
  NotFound = 404,
  Success = 200,
  Accepted = 202,
  BadRequest = 400
}
// logs 404
console.log(StatusCodes.NotFound);
// logs 200
console.log(StatusCodes.Success);
Try it Yourself »

w3schools CERTIFIED . 2022

Get Certified!

Complete the TypeScript modules, do the exercises, take the exam and become w3schools certified!!

$95 ENROLL

String Enums

Enums can also contain strings. This is more common than numeric enums, because of their readability and intent.

Example

enum CardinalDirections {
  North = 'North',
  East = "East",
  South = "South",
  West = "West"
};
// logs "North"
console.log(CardinalDirections.North);
// logs "West"
console.log(CardinalDirections.West);
Try it Yourself »

Technically, you can mix and match string and numeric enum values, but it is recommended not to do so.


TypeScript Exercises

Test Yourself With Exercises

Exercise:

Create an enum called myEnum, with 2 constants (myFirstConst, mySecondConst) with default values:

enum  {
  ,
  
};
        

Start the Exercise