Bird
Raised Fist0
Typescriptprogramming~20 mins

String enums in Typescript - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
String Enum Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of accessing string enum member
What is the output of this TypeScript code?
Typescript
enum Direction {
  Up = "UP",
  Down = "DOWN",
  Left = "LEFT",
  Right = "RIGHT"
}

console.log(Direction.Left);
A"LEFT"
BLeft
C3
Dundefined
Attempts:
2 left
💡 Hint
Remember that string enums store string values, not numbers.
❓ Predict Output
intermediate
2:00remaining
Value of enum member without explicit assignment
What will be the output of this TypeScript code?
Typescript
enum Status {
  Pending = "PENDING",
  Active,
  Completed = "COMPLETED"
}

console.log(Status.Active);
A1
B"PENDING"
Cundefined
DSyntaxError
Attempts:
2 left
💡 Hint
In string enums, all members must have string initializers.
🧠 Conceptual
advanced
2:00remaining
Why use string enums over numeric enums?
Which of the following is the best reason to use string enums instead of numeric enums in TypeScript?
AString enums provide better readability and debugging because values are descriptive strings.
BString enums are faster to execute than numeric enums.
CString enums allow automatic reverse mapping from value to key.
DString enums consume less memory than numeric enums.
Attempts:
2 left
💡 Hint
Think about how values appear in logs and error messages.
🔧 Debug
advanced
2:00remaining
Identify the error in this string enum usage
What error will this TypeScript code produce?
Typescript
enum Colors {
  Red = "RED",
  Green = "GREEN",
  Blue = "BLUE"
}

const favorite: Colors = "RED";
console.log(favorite);
ANo error, outputs "RED"
BReferenceError: Colors is not defined
CType '"RED"' is not assignable to type 'Colors'.
DTypeError: favorite is not a Colors enum
Attempts:
2 left
💡 Hint
Check the type compatibility between string literals and enum types.
🚀 Application
expert
2:00remaining
Count enum members with string values
Given this string enum, how many members does it have?
Typescript
enum Fruits {
  Apple = "APPLE",
  Banana = "BANANA",
  Cherry = "CHERRY"
}

const count = Object.keys(Fruits).length;
console.log(count);
A6
B3
C0
Dundefined
Attempts:
2 left
💡 Hint
String enums do not create reverse mappings like numeric enums.

Practice

(1/5)
1. What is a key benefit of using string enums in TypeScript?
easy
A. They group related string constants under named values for clarity.
B. They automatically assign numeric values to members.
C. They allow mixing numbers and strings without errors.
D. They eliminate the need to declare enum members explicitly.

Solution

  1. Step 1: Understand string enums purpose

    String enums group related string values under named constants to improve code clarity and safety.
  2. Step 2: Compare options

    Only They group related string constants under named values for clarity. correctly describes this benefit. Numeric auto-assignment and mixing types are not features of string enums.
  3. Final Answer:

    They group related string constants under named values for clarity. -> Option A
  4. Quick Check:

    String enums improve clarity = A [OK]
Hint: String enums give names to strings for clearer code [OK]
Common Mistakes:
  • Confusing string enums with numeric enums
  • Thinking enum members can be implicit strings
  • Assuming enums mix string and number types
2. Which of the following is the correct syntax to declare a string enum in TypeScript?
easy
A. const enum Colors { Red = RED, Green = GREEN, Blue = BLUE }
B. enum Colors { Red, Green, Blue }
C. enum Colors { Red = 'RED', Green = 'GREEN', Blue = 'BLUE' }
D. enum Colors = { Red: 'RED', Green: 'GREEN', Blue: 'BLUE' }

Solution

  1. Step 1: Review string enum syntax

    String enums require explicit string values assigned to each member using = 'value' inside an enum block.
  2. Step 2: Check each option

    enum Colors { Red = 'RED', Green = 'GREEN', Blue = 'BLUE' } correctly uses enum Colors { Red = 'RED', ... }. enum Colors { Red, Green, Blue } lacks string assignments. enum Colors = { Red: 'RED', Green: 'GREEN', Blue: 'BLUE' } uses invalid syntax with = outside enum. const enum Colors { Red = RED, Green = GREEN, Blue = BLUE } misses quotes around string values.
  3. Final Answer:

    enum Colors { Red = 'RED', Green = 'GREEN', Blue = 'BLUE' } -> Option C
  4. Quick Check:

    String enum syntax = D [OK]
Hint: String enums need explicit string values with quotes [OK]
Common Mistakes:
  • Omitting string values for enum members
  • Using object literal syntax instead of enum
  • Missing quotes around string values
3. What will be the output of this TypeScript code?
enum Direction {
  Up = "UP",
  Down = "DOWN",
  Left = "LEFT",
  Right = "RIGHT"
}

console.log(Direction.Left);
medium
A. 3
B. "LEFT"
C. Left
D. undefined

Solution

  1. Step 1: Understand enum member values

    Each member in the string enum has an explicit string value, e.g., Left = "LEFT".
  2. Step 2: Check console.log output

    Logging Direction.Left prints the string value assigned, which is "LEFT".
  3. Final Answer:

    "LEFT" -> Option B
  4. Quick Check:

    Enum member value = "LEFT" [OK]
Hint: Enum member prints assigned string value, not name or index [OK]
Common Mistakes:
  • Expecting member name instead of value
  • Confusing string enums with numeric enums
  • Assuming enum members print numeric indexes
4. Identify the error in this string enum declaration:
enum Status {
  Active = ACTIVE,
  Inactive = "INACTIVE"
}
medium
A. Enum name Status is invalid
B. Enum members cannot have different string values
C. Enum must use numeric values only
D. Missing quotes around ACTIVE in Active member

Solution

  1. Step 1: Check string enum member values

    String enum members must have explicit string values in quotes, e.g., "ACTIVE".
  2. Step 2: Identify error in Active member

    The Active member uses ACTIVE without quotes, causing a reference error.
  3. Final Answer:

    Missing quotes around ACTIVE in Active member -> Option D
  4. Quick Check:

    String values need quotes = A [OK]
Hint: Always put string enum values inside quotes [OK]
Common Mistakes:
  • Forgetting quotes around string values
  • Mixing string and numeric enum members
  • Assuming enum names have restrictions
5. Given this string enum:
enum Role {
  Admin = "ADMIN",
  User = "USER",
  Guest = "GUEST"
}

Which code snippet correctly checks if a variable r is a valid Role value?
hard
A. if (Object.values(Role).includes(r)) { /* valid */ }
B. if (r in Role) { /* valid */ }
C. if (r === Role) { /* valid */ }
D. if (Role[r]) { /* valid */ }

Solution

  1. Step 1: Understand enum value checking

    To check if r is a valid enum value, compare it against the enum's values, not keys.
  2. Step 2: Evaluate each option

    if (Object.values(Role).includes(r)) { /* valid */ } uses Object.values(Role).includes(r), correctly checking if r matches any enum string value. if (r in Role) { /* valid */ } checks keys, not values. if (r === Role) { /* valid */ } compares a string to the enum object itself. if (Role[r]) { /* valid */ } tries to index enum with string value, which fails.
  3. Final Answer:

    if (Object.values(Role).includes(r)) { /* valid */ } -> Option A
  4. Quick Check:

    Check enum values with Object.values() = B [OK]
Hint: Use Object.values(enum).includes(value) to check string enums [OK]
Common Mistakes:
  • Checking keys instead of values
  • Comparing value directly to enum object
  • Using enum indexing with string 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