Bird
Raised Fist0
Typescriptprogramming~5 mins

Template literal with unions in Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a template literal type in TypeScript?
A template literal type lets you create new string types by combining unions of string literals with template strings, similar to how template literals work in JavaScript but at the type level.
Click to reveal answer
intermediate
How do unions work with template literal types?
Unions allow multiple string literal types to be combined. When used inside a template literal type, TypeScript creates all possible combinations of those union members as new string literal types.
Click to reveal answer
beginner
Example: What is the resulting type of `type Greeting = `${'Hello' | 'Hi'}, ${'Alice' | 'Bob'}``?
The type Greeting is a union of these string literals: 'Hello, Alice', 'Hello, Bob', 'Hi, Alice', and 'Hi, Bob'.
Click to reveal answer
intermediate
Why use template literal types with unions?
They help create precise string types that represent all valid combinations, improving type safety and autocomplete suggestions in your code.
Click to reveal answer
advanced
Can template literal types with unions be nested?
Yes, you can nest unions inside template literals multiple times to build complex string types representing many combinations.
Click to reveal answer
What does the TypeScript type `type T = `${'a' | 'b'}${'1' | '2'}`` represent?
A'a1' & 'a2' & 'b1' & 'b2'
B'a' | 'b' | '1' | '2'
CA single string 'ab12'
D'a1' | 'a2' | 'b1' | 'b2'
Which keyword is used to combine multiple string literal types in TypeScript?
Aunion (|)
Bintersection (&)
Cextends
Dimplements
Can template literal types only use string literals inside the template?
AOnly numbers can be used
BNo, any type can be used
CYes, only string literals or unions of string literals
DOnly boolean values can be used
What is the benefit of using template literal types with unions?
AThey create precise string types representing all valid combinations
BThey improve runtime performance
CThey allow dynamic string concatenation at runtime
DThey replace interfaces
If you have `type Colors = 'red' | 'blue'` and `type Shades = 'light' | 'dark'`, what does `type ColoredShade = `${Shades} ${Colors}`` produce?
A'red light' | 'blue light' | 'red dark' | 'blue dark'
B'light red' | 'light blue' | 'dark red' | 'dark blue'
C'lightred' | 'lightblue' | 'darkred' | 'darkblue'
DAn error
Explain how template literal types work with unions in TypeScript and give a simple example.
Think about how strings combine in JavaScript template literals but at the type level.
You got /4 concepts.
    Describe a practical use case where template literal types with unions improve your TypeScript code.
    Consider situations where you want to restrict strings to specific patterns.
    You got /4 concepts.

      Practice

      (1/5)
      1.

      Which of the following best describes a template literal with unions in TypeScript?

      easy
      A. A method to concatenate numbers and strings without type checking.
      B. A way to create specific string patterns by combining fixed text and union types.
      C. A function that returns a template string without any type restrictions.
      D. A way to declare variables without specifying their types.

      Solution

      1. Step 1: Understand template literals and unions

        Template literals allow embedding expressions in strings. Union types restrict values to a set of options.
      2. Step 2: Combine both concepts

        Template literal with unions creates strings with fixed parts and limited variable parts, improving type safety.
      3. Final Answer:

        A way to create specific string patterns by combining fixed text and union types. -> Option B
      4. Quick Check:

        Template literal + union = specific string patterns [OK]
      Hint: Think of fixed text plus limited choices in strings [OK]
      Common Mistakes:
      • Confusing unions with simple string concatenation
      • Ignoring type safety benefits
      • Thinking it's only about functions
      2.

      Which of the following TypeScript declarations correctly uses a template literal with unions?

      type Size = "small" | "medium" | "large";
      type Message = `Size is ${Size}`;
      easy
      A. type Message = `Size is ${string}`;
      B. type Message = `Size is ${boolean}`;
      C. type Message = `Size is ${number}`;
      D. type Message = `Size is ${Size}`;

      Solution

      1. Step 1: Check the union type used inside template literal

        The union type Size is "small" | "medium" | "large" and should be used inside the template literal.
      2. Step 2: Match the template literal syntax

        The correct syntax is `Size is ${Size}` to restrict the string to those sizes.
      3. Final Answer:

        type Message = `Size is ${Size}`; -> Option D
      4. Quick Check:

        Use union type inside template literal exactly [OK]
      Hint: Use the union type name inside ${} exactly [OK]
      Common Mistakes:
      • Replacing union with general types like string or number
      • Using incorrect syntax for template literals
      • Forgetting backticks around the template
      3.

      What is the type of result in the following code?

      type Color = "red" | "green" | "blue";
      type Alert = `Alert: ${Color}`;
      
      const result: Alert = "Alert: green";
      medium
      A. "Alert: red" | "Alert: green" | "Alert: blue"
      B. "Alert: red" | "Alert: green"
      C. "Alert: green"
      D. string

      Solution

      1. Step 1: Understand the template literal with union

        The type Alert creates strings by combining "Alert: " with each value in Color.
      2. Step 2: Expand the union to all possible strings

        So Alert is the union of "Alert: red", "Alert: green", and "Alert: blue".
      3. Final Answer:

        "Alert: red" | "Alert: green" | "Alert: blue" -> Option A
      4. Quick Check:

        Template literal expands union to all combined strings [OK]
      Hint: Expand union inside template literal to all string combos [OK]
      Common Mistakes:
      • Assuming only one string value is allowed
      • Confusing union with single string
      • Using general string type instead of union
      4.

      Identify the error in this TypeScript code using template literals with unions:

      type Status = "success" | "error";
      type Message = `Status: ${string}`;
      
      const msg: Message = "Status: success";
      medium
      A. Using string inside template literal instead of union type Status.
      B. Missing backticks around the string value assigned to msg.
      C. Incorrect union type declaration for Status.
      D. Assigning a string literal to a non-string type.

      Solution

      1. Step 1: Check the template literal type definition

        The template literal uses ${string} which allows any string, not restricted to Status.
      2. Step 2: Identify the correct usage

        It should use ${Status} to restrict values to "success" or "error" only.
      3. Final Answer:

        Using string inside template literal instead of union type Status. -> Option A
      4. Quick Check:

        Use union type inside template literal for safety [OK]
      Hint: Use union type inside ${}, not general string [OK]
      Common Mistakes:
      • Using string instead of union type inside template
      • Ignoring type safety benefits
      • Confusing string literals with template literals
      5.

      Given the following types, which of these assignments is valid without TypeScript errors?

      type Direction = "up" | "down";
      type Action = "move" | "stop";
      type Command = `${Action}-${Direction}`;
      
      const cmd1: Command = "move-up";
      const cmd2: Command = "stop-left";
      const cmd3: Command = "move-down";
      const cmd4: Command = "jump-up";
      hard
      A. Only cmd2 is valid.
      B. All commands are valid.
      C. Only cmd1 and cmd3 are valid.
      D. Only cmd4 is valid.

      Solution

      1. Step 1: Understand the Command type

        Command is a template literal combining Action and Direction with a dash, so valid strings are "move-up", "move-down", "stop-up", "stop-down".
      2. Step 2: Check each assignment

        cmd1 = "move-up" (valid), cmd2 = "stop-left" (invalid, "left" not in Direction), cmd3 = "move-down" (valid), cmd4 = "jump-up" (invalid, "jump" not in Action).
      3. Final Answer:

        Only cmd1 and cmd3 are valid. -> Option C
      4. Quick Check:

        Match both parts to union values exactly [OK]
      Hint: Check both parts of template literal match union values [OK]
      Common Mistakes:
      • Assuming any string with dash is valid
      • Ignoring union type restrictions
      • Confusing Action and Direction 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