Bird
Raised Fist0
Typescriptprogramming~5 mins

Reverse mapping in numeric enums in Typescript - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Reverse mapping in numeric enums
O(1)
Understanding Time Complexity

We want to understand how the time it takes to find values in a numeric enum changes as the enum grows.

Specifically, how does looking up a name by its numeric value behave as the enum size increases?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


    enum Colors {
      Red,    // 0
      Green,  // 1
      Blue    // 2
    }
    
    function getColorName(value: number): string | undefined {
      return Colors[value];
    }
    

This code uses a numeric enum and looks up the name of a color by its numeric value.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Direct property access on an object (reverse mapping) without loops.
  • How many times: Exactly once per lookup, no repeated traversal.
How Execution Grows With Input

Looking up a value in the enum is like checking a label on a box directly, no matter how many boxes there are.

Input Size (n)Approx. Operations
101
1001
10001

Pattern observation: The time to find a name stays the same even if the enum grows larger.

Final Time Complexity

Time Complexity: O(1)

This means the lookup time stays constant no matter how many enum members exist.

Common Mistake

[X] Wrong: "Looking up a name by value in a numeric enum takes longer as the enum grows because it searches through all entries."

[OK] Correct: The enum is compiled into an object with direct keys, so the lookup is a simple direct access, not a search.

Interview Connect

Understanding how enum reverse mapping works helps you explain efficient lookups in TypeScript, showing you know how language features behave under the hood.

Self-Check

"What if the enum used string values instead of numbers? How would the time complexity of reverse lookup change?"

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