What if you could instantly find a name from a number without writing extra code?
Why Reverse mapping in numeric enums in Typescript? - Purpose & Use Cases
Imagine you have a list of numbered options, like days of the week, and you want to find the name of a day when you only have its number. Doing this by hand means writing extra code to check each number and return the right name.
Manually writing code to find names from numbers is slow and easy to mess up. You have to keep updating your code if you add or change numbers. It's like having to remember every phone number and name yourself instead of looking it up quickly.
Reverse mapping in numeric enums lets you automatically get the name from the number without extra code. TypeScript creates a two-way map so you can use the number to find the name easily, saving time and avoiding mistakes.
function getDayName(num: number) {
if (num === 0) return 'Sunday';
else if (num === 1) return 'Monday';
// and so on...
}enum Days { Sunday, Monday, Tuesday }
const dayName = Days[1]; // 'Monday'This makes your code cleaner and faster, letting you switch between numbers and names effortlessly.
Think of a game where each level has a number and a name. Reverse mapping lets the game show the level name when it only knows the number, without extra work.
Manual lookups are slow and error-prone.
Reverse mapping automates number-to-name conversion.
It keeps code simple and easy to maintain.
Practice
Solution
Step 1: Understand numeric enums
Numeric enums assign numbers to names and create a two-way map.Step 2: Understand reverse mapping
Reverse mapping lets you use the number to get the enum name back.Final Answer:
Convert enum numeric values back to their corresponding names -> Option CQuick Check:
Reverse mapping = number to name conversion [OK]
- Thinking reverse mapping converts names to strings
- Confusing string enums with numeric enums
- Assuming enums are immutable at runtime
2 in TypeScript?Solution
Step 1: Recall enum reverse mapping syntax
Numeric enums create a reverse map accessible by bracket notation with the number.Step 2: Identify correct syntax
Using EnumName[2] returns the name for value 2.Final Answer:
EnumName[2] -> Option BQuick Check:
Bracket notation with number = Enum name [OK]
- Using dot notation with a number (invalid syntax)
- Trying to call a non-existent getName method
- Using string keys instead of numeric keys
enum Color { Red, Green, Blue }What is the output of
console.log(Color[1])?Solution
Step 1: Understand enum default values
By default, Red=0, Green=1, Blue=2 in numeric enums.Step 2: Use reverse mapping
Color[1] returns the name for value 1, which is "Green".Final Answer:
"Green" -> Option AQuick Check:
Color[1] = "Green" [OK]
- Assuming enum values start at 1
- Expecting numeric output instead of string
- Confusing enum name with value
enum Status { Active = 1, Inactive, Pending }What is wrong with this code?
console.log(Status[0]);
Solution
Step 1: Check enum values
Status starts at 1, so valid values are 1, 2, 3 for Active, Inactive, Pending.Step 2: Check reverse mapping for 0
Status[0] does not exist, so it returns undefined.Final Answer:
It returns undefined because 0 is not a valid enum value -> Option AQuick Check:
Invalid enum value returns undefined [OK]
- Expecting 0 to map to first enum name
- Thinking it causes syntax or runtime error
- Assuming reverse mapping always returns a string
enum Direction { Up = 3, Down = 5, Left = 7, Right = 9 }What will
console.log(Direction[5]) output?Solution
Step 1: Identify enum values
Direction enum assigns Up=3, Down=5, Left=7, Right=9 explicitly.Step 2: Use reverse mapping
Direction[5] returns the name for value 5, which is "Down".Final Answer:
"Down" -> Option DQuick Check:
Reverse mapping works with custom numeric values [OK]
- Assuming reverse mapping only works with default values
- Expecting numeric output instead of string
- Confusing enum names with values
Ready to prove it?
Pass the test and this pattern moves unknown
