Bird
Raised Fist0
Typescriptprogramming~5 mins

When enums add unnecessary runtime code in Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a TypeScript enum?
An enum in TypeScript is a way to define a set of named constants. It creates an object at runtime that maps names to values and sometimes values back to names.
Click to reveal answer
intermediate
Why can enums add unnecessary runtime code?
Because enums generate JavaScript objects at runtime, they add extra code even if you only need compile-time type checking or simple constants.
Click to reveal answer
intermediate
What is a common alternative to enums to avoid runtime code?
Using union types of string or number literals combined with 'as const' objects can provide type safety without generating runtime code.
Click to reveal answer
advanced
How does a const enum differ from a regular enum in TypeScript?
A const enum is inlined at compile time and does not generate runtime code, but it requires 'preserveConstEnums' to be false and can cause issues with some tools.
Click to reveal answer
advanced
What is a downside of using const enums?
Const enums are erased during compilation, so if you use them with external JavaScript or certain build tools, it can cause errors because the enum object does not exist at runtime.
Click to reveal answer
What does a regular TypeScript enum generate in JavaScript?
AA function that returns enum values
BOnly type information, no JavaScript code
CAn object with keys and values representing the enum members
DA string literal union type
Which TypeScript feature avoids generating runtime code for enums?
Aconst enum
Binterface
Cclass
Dnamespace
What is a simple alternative to enums to get type safety without runtime code?
AUsing functions
BUnion of string literals with 'as const' object
CUsing interfaces
DUsing classes with static properties
What problem can const enums cause in some build setups?
ARuntime errors because enum objects do not exist
BSlower runtime performance
CLarger bundle size
DLack of type safety
When should you avoid using regular enums in TypeScript?
AWhen you want to use interfaces
BWhen you need runtime reflection
CWhen you want to use classes
DWhen you want to avoid extra runtime code
Explain why regular enums in TypeScript can add unnecessary runtime code and how to avoid it.
Think about what code is generated and alternatives that only exist at compile time.
You got /3 concepts.
    Describe the trade-offs between using regular enums and const enums in TypeScript.
    Consider runtime presence and compatibility.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is a main reason to avoid using regular enums in TypeScript when you only need type checking?
      easy
      A. They add extra runtime code that may be unnecessary.
      B. They cause syntax errors in modern TypeScript versions.
      C. They cannot be used with functions.
      D. They do not support string values.

      Solution

      1. Step 1: Understand what regular enums generate

        Regular enums create extra JavaScript code that runs when your program runs, even if you only want type checks.
      2. Step 2: Identify the impact of extra runtime code

        This extra code can increase bundle size and slow down execution unnecessarily if you only need compile-time type safety.
      3. Final Answer:

        They add extra runtime code that may be unnecessary. -> Option A
      4. Quick Check:

        Extra runtime code = Avoid regular enums when only type checks needed [OK]
      Hint: Remember: regular enums add runtime code, const enums don't [OK]
      Common Mistakes:
      • Thinking enums cause syntax errors
      • Believing enums can't hold string values
      • Assuming enums can't be used with functions
      2. Which syntax correctly declares a const enum in TypeScript to avoid runtime code?
      easy
      A. enum Colors { Red, Green, Blue }
      B. const Colors = enum { Red, Green, Blue }
      C. const enum Colors { Red, Green, Blue }
      D. enum const Colors { Red, Green, Blue }

      Solution

      1. Step 1: Recall the correct const enum syntax

        The correct way to declare a const enum is by placing the keyword const before enum like const enum Colors { ... }.
      2. Step 2: Identify incorrect options

        enum Colors { Red, Green, Blue } is a regular enum, not const. const Colors = enum { Red, Green, Blue } and D have invalid syntax order or structure.
      3. Final Answer:

        const enum Colors { Red, Green, Blue } -> Option C
      4. Quick Check:

        const enum syntax = const enum Name { ... } [OK]
      Hint: const enum always starts with 'const enum' keywords [OK]
      Common Mistakes:
      • Placing const after enum
      • Using invalid syntax like 'const Colors = enum'
      • Confusing regular enum with const enum
      3. What will be the output of this TypeScript code when compiled and run in JavaScript?
      const enum Status { Active, Inactive }
      const current = Status.Active;
      console.log(current);
      medium
      A. Status.Active
      B. 0
      C. undefined
      D. Error at runtime

      Solution

      1. Step 1: Understand const enum compilation

        Const enums are inlined by the compiler, so Status.Active becomes the numeric value 0 directly in the output JavaScript.
      2. Step 2: Predict the console output

        Since current is assigned Status.Active, which is 0, the console.log prints 0.
      3. Final Answer:

        0 -> Option B
      4. Quick Check:

        const enum values inline as numbers [OK]
      Hint: const enum values become numbers directly in output [OK]
      Common Mistakes:
      • Expecting enum object at runtime
      • Thinking it prints the enum name
      • Assuming runtime error due to const enum
      4. Identify the problem in this TypeScript code snippet that uses a regular enum:
      enum Direction { Up, Down }
      function move(dir: Direction) {
        console.log(dir);
      }
      move(Direction.Left);
      medium
      A. The function move should return a value.
      B. Enums cannot be used as function parameters.
      C. The enum must be declared as const enum.
      D. Direction.Left does not exist, causing a compile error.

      Solution

      1. Step 1: Check enum members

        The enum Direction only has Up and Down. Left is not defined.
      2. Step 2: Understand the error cause

        Using Direction.Left causes a compile-time error because Left is not a valid member.
      3. Final Answer:

        Direction.Left does not exist, causing a compile error. -> Option D
      4. Quick Check:

        Using undefined enum member = compile error [OK]
      Hint: Use only defined enum members to avoid errors [OK]
      Common Mistakes:
      • Assuming enums can't be function parameters
      • Thinking const enum is required here
      • Expecting runtime error instead of compile error
      5. You want to define a set of string values for user roles without adding runtime code. Which TypeScript approach is best?
      hard
      A. Use a union of string literal types.
      B. Use a regular enum with string values.
      C. Use a const enum with string values.
      D. Use a class with static string properties.

      Solution

      1. Step 1: Understand runtime code from enums

        Regular enums with string values generate runtime code. Const enums with string values are not allowed in TypeScript.
      2. Step 2: Identify the best alternative

        Using a union of string literal types (e.g., 'admin' | 'user' | 'guest') provides type safety without any runtime code.
      3. Final Answer:

        Use a union of string literal types. -> Option A
      4. Quick Check:

        String unions avoid runtime code unlike enums [OK]
      Hint: Use string unions for roles to skip runtime code [OK]
      Common Mistakes:
      • Trying to use const enum with strings (not allowed)
      • Choosing regular enums causing extra code
      • Using classes adds unnecessary complexity
      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