Episode 19 of 21

Enums

Use enums to define a set of named constants for cleaner, more readable code.

Enums

Enums let you define a set of named constants, making your code more readable and less error-prone.

Numeric Enums

enum ResourceType {
    BOOK,       // 0
    AUTHOR,     // 1
    FILM,       // 2
    DIRECTOR,   // 3
}

console.log(ResourceType.BOOK);    // 0
console.log(ResourceType.AUTHOR);  // 1

Using Enums

interface Resource<T> {
    uid: number;
    type: ResourceType;
    data: T;
}

const doc: Resource<object> = {
    uid: 1,
    type: ResourceType.BOOK,
    data: { title: "TypeScript Guide" },
};

if (doc.type === ResourceType.BOOK) {
    console.log("This is a book resource");
}

String Enums

enum Direction {
    UP = "UP",
    DOWN = "DOWN",
    LEFT = "LEFT",
    RIGHT = "RIGHT",
}

const move = (direction: Direction) => {
    console.log(`Moving ${direction}`);
};
move(Direction.UP);  // "Moving UP"

When to Use Enums

  • Status codes: PENDING, ACTIVE, COMPLETED
  • User roles: ADMIN, USER, GUEST
  • Directions, colors, categories — any fixed set of values

Key Takeaways

  • Enums define named constants (numeric by default)
  • String enums provide readable values
  • Great for restricting values to a fixed set
  • Makes code more readable than magic numbers/strings