Bird
Raised Fist0
Typescriptprogramming~5 mins

Reverse mapping in numeric enums in Typescript

Choose your learning style10 modes available
Introduction

Reverse mapping helps you find the name of an enum member when you have its numeric value. It makes working with enums easier and clearer.

When you get a numeric value and want to know which enum name it matches.
When debugging and you want to print the enum name instead of just a number.
When you receive numeric enum values from an API and want to convert them back to readable names.
Syntax
Typescript
enum EnumName {
  Member1 = 0,
  Member2 = 1,
  Member3 = 2
}

// Reverse mapping example:
let name = EnumName[1]; // 'Member2'

Numeric enums automatically create reverse mappings from value to name.

Reverse mapping works only for numeric enums, not for string enums.

Examples
This prints the name 'Green' because 1 maps to Green in the enum.
Typescript
enum Colors {
  Red = 0,
  Green = 1,
  Blue = 2
}

console.log(Colors[1]);
Since Waiting is 6 (5 + 1), Status[6] returns 'Waiting'.
Typescript
enum Status {
  Ready = 5,
  Waiting,
  Done
}

console.log(Status[6]);
Reverse mapping finds 'Left' from the numeric value 3.
Typescript
enum Direction {
  Up = 1,
  Down = 2,
  Left = 3,
  Right = 4
}

let dirName = Direction[3];
console.log(dirName);
Sample Program

This program shows how to get the enum name from a number using reverse mapping.

Typescript
enum Weekday {
  Monday = 1,
  Tuesday,
  Wednesday,
  Thursday,
  Friday
}

// Get name from number
const dayName = Weekday[3];
console.log(`Day 3 is ${dayName}`);
OutputSuccess
Important Notes

Reverse mapping only works with numeric enums, not string enums.

If you assign custom numbers, reverse mapping uses those numbers to find names.

Be careful: if two members have the same value, reverse mapping returns the last one defined.

Summary

Numeric enums create a two-way map: name to number and number to name.

Reverse mapping helps convert numbers back to enum names easily.

This feature is useful for debugging and working with numeric enum values.

Practice

(1/5)
1. What does reverse mapping in numeric enums in TypeScript allow you to do?
easy
A. Prevent enums from being changed at runtime
B. Convert enum names to strings automatically
C. Convert enum numeric values back to their corresponding names
D. Create string enums instead of numeric enums

Solution

  1. Step 1: Understand numeric enums

    Numeric enums assign numbers to names and create a two-way map.
  2. Step 2: Understand reverse mapping

    Reverse mapping lets you use the number to get the enum name back.
  3. Final Answer:

    Convert enum numeric values back to their corresponding names -> Option C
  4. Quick Check:

    Reverse mapping = number to name conversion [OK]
Hint: Remember: numeric enums map both ways: name↔number [OK]
Common Mistakes:
  • Thinking reverse mapping converts names to strings
  • Confusing string enums with numeric enums
  • Assuming enums are immutable at runtime
2. Which of the following is the correct syntax to access the name from a numeric enum value 2 in TypeScript?
easy
A. EnumName['name']
B. EnumName[2]
C. EnumName.getName(2)
D. EnumName.2

Solution

  1. Step 1: Recall enum reverse mapping syntax

    Numeric enums create a reverse map accessible by bracket notation with the number.
  2. Step 2: Identify correct syntax

    Using EnumName[2] returns the name for value 2.
  3. Final Answer:

    EnumName[2] -> Option B
  4. Quick Check:

    Bracket notation with number = Enum name [OK]
Hint: Use bracket notation with number to get enum name [OK]
Common Mistakes:
  • Using dot notation with a number (invalid syntax)
  • Trying to call a non-existent getName method
  • Using string keys instead of numeric keys
3. Given the enum:
enum Color { Red, Green, Blue }

What is the output of console.log(Color[1])?
medium
A. "Green"
B. "Red"
C. 1
D. undefined

Solution

  1. Step 1: Understand enum default values

    By default, Red=0, Green=1, Blue=2 in numeric enums.
  2. Step 2: Use reverse mapping

    Color[1] returns the name for value 1, which is "Green".
  3. Final Answer:

    "Green" -> Option A
  4. Quick Check:

    Color[1] = "Green" [OK]
Hint: Default enum starts at 0, so 1 maps to second name [OK]
Common Mistakes:
  • Assuming enum values start at 1
  • Expecting numeric output instead of string
  • Confusing enum name with value
4. Consider this enum:
enum Status { Active = 1, Inactive, Pending }

What is wrong with this code?
console.log(Status[0]);
medium
A. It returns undefined because 0 is not a valid enum value
B. It causes a syntax error
C. It returns "Active" incorrectly
D. It throws a runtime exception

Solution

  1. Step 1: Check enum values

    Status starts at 1, so valid values are 1, 2, 3 for Active, Inactive, Pending.
  2. Step 2: Check reverse mapping for 0

    Status[0] does not exist, so it returns undefined.
  3. Final Answer:

    It returns undefined because 0 is not a valid enum value -> Option A
  4. Quick Check:

    Invalid enum value returns undefined [OK]
Hint: Check enum start value before reverse mapping [OK]
Common Mistakes:
  • Expecting 0 to map to first enum name
  • Thinking it causes syntax or runtime error
  • Assuming reverse mapping always returns a string
5. Given this enum with custom values:
enum Direction { Up = 3, Down = 5, Left = 7, Right = 9 }

What will console.log(Direction[5]) output?
hard
A. 5
B. "Up"
C. undefined
D. "Down"

Solution

  1. Step 1: Identify enum values

    Direction enum assigns Up=3, Down=5, Left=7, Right=9 explicitly.
  2. Step 2: Use reverse mapping

    Direction[5] returns the name for value 5, which is "Down".
  3. Final Answer:

    "Down" -> Option D
  4. Quick Check:

    Reverse mapping works with custom numeric values [OK]
Hint: Reverse mapping works even with custom enum numbers [OK]
Common Mistakes:
  • Assuming reverse mapping only works with default values
  • Expecting numeric output instead of string
  • Confusing enum names with values
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard