Bird
Raised Fist0
Typescriptprogramming~5 mins

Template literal types 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 other string literal types or string unions using backticks (`) and placeholders (${...}). It works like string templates but for types.
Click to reveal answer
beginner
How do you create a template literal type that combines two string literals, e.g., 'hello' and 'world'?
You write: `type Greeting = `${'hello'} ${'world'}`;` This creates a type that matches the string 'hello world'.
Click to reveal answer
intermediate
Can template literal types use unions inside placeholders? Give an example.
Yes. For example: `type Colors = 'red' | 'blue'; type Shades = `${Colors}Light` | `${Colors}Dark`;` This creates types like 'redLight', 'redDark', 'blueLight', and 'blueDark'.
Click to reveal answer
intermediate
What happens if you use a template literal type with a number or boolean type inside the placeholder?
TypeScript converts the number or boolean to a string literal type. For example, `type NumStr = `${1 | 2}`;` creates a type '1' | '2' as strings.
Click to reveal answer
beginner
Why are template literal types useful in TypeScript?
They help create flexible and precise string types by combining smaller types. This improves type safety and auto-completion for strings that follow patterns.
Click to reveal answer
Which syntax correctly defines a template literal type combining 'foo' and 'bar'?
Atype T = `${'foo'}${'bar'}`;
Btype T = 'foo' + 'bar';
Ctype T = 'foo' & 'bar';
Dtype T = 'foo' | 'bar';
What type does this produce? `type T = `${'a' | 'b'}${'1' | '2'}`;`
A'a' | 'b' | '1' | '2'
B'a1' | 'a2' | 'b1' | 'b2'
C'a12' | 'b12'
D'a' & '1' & 'b' & '2'
Can template literal types include expressions other than string literals?
AYes, but only boolean types
BNo, only string literals are allowed
CYes, including unions of strings and numbers converted to strings
DNo, only numbers are allowed
What is the result type of `type T = `${number}`;`?
Astring
Bnever
Cnumber
Dtemplate literal type representing any number as string
Why use template literal types instead of plain string unions?
ATo build complex string patterns from smaller parts
BTo allow any string value
CTo convert numbers to booleans
DTo disable type checking
Explain what template literal types are and how they help in TypeScript.
Think about how string templates work in JavaScript but for types.
You got /3 concepts.
    Describe how unions inside template literal types create multiple string combinations.
    Consider how 'a' | 'b' and '1' | '2' combine in a template literal.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of template literal types in TypeScript?
      easy
      A. To create new string types by combining existing string types
      B. To perform string concatenation at runtime
      C. To define numeric ranges for variables
      D. To declare functions with string parameters

      Solution

      1. Step 1: Understand template literal types

        Template literal types allow combining string literal types to form new string types.
      2. Step 2: Differentiate from runtime string operations

        They are used at compile time for type checking, not for runtime string concatenation or numeric ranges.
      3. Final Answer:

        To create new string types by combining existing string types -> Option A
      4. Quick Check:

        Template literal types build new string types [OK]
      Hint: Remember: template literal types create types, not runtime strings [OK]
      Common Mistakes:
      • Confusing template literal types with runtime string concatenation
      • Thinking they define numeric ranges
      • Assuming they declare functions
      2. Which of the following is the correct syntax to define a template literal type combining 'hello' and 'world' with a space in between?
      easy
      A. type Greeting = `${'hello'} ${'world'}`;
      B. type Greeting = `hello world`;
      C. type Greeting = `${'hello' + ' ' + 'world'}`;
      D. type Greeting = '${hello} ${world}';

      Solution

      1. Step 1: Understand template literal syntax

        Template literal types use backticks and ${} to embed string literals or types.
      2. Step 2: Check each option

        type Greeting = `${'hello'} ${'world'}`; correctly uses backticks and embeds 'hello' and 'world' with a space between them. type Greeting = `${'hello' + ' ' + 'world'}`; uses + inside template literal which is invalid. type Greeting = `hello world`; is a plain string literal, not combining types. type Greeting = '${hello} ${world}'; uses single quotes and incorrect syntax.
      3. Final Answer:

        type Greeting = `${'hello'} ${'world'}`; -> Option A
      4. Quick Check:

        Correct template literal syntax uses backticks and ${} [OK]
      Hint: Use backticks and ${} to embed strings in template literal types [OK]
      Common Mistakes:
      • Using + inside template literals
      • Using single quotes instead of backticks
      • Writing plain strings instead of template literal types
      3. Given the following TypeScript code, what is the type of greeting?
      type Hello = 'hello';
      type World = 'world';
      type Greeting = `${Hello} ${World}`;
      
      const greeting: Greeting = 'hello world';
      medium
      A. `${Hello}${World}`
      B. 'hello' | 'world'
      C. string
      D. 'hello world'

      Solution

      1. Step 1: Understand the template literal type definition

        The type Greeting combines 'hello' and 'world' with a space, so it represents the exact string 'hello world'.
      2. Step 2: Check the assigned value type

        The variable greeting is assigned 'hello world', which matches the Greeting type exactly.
      3. Final Answer:

        'hello world' -> Option D
      4. Quick Check:

        Template literal type matches exact combined string [OK]
      Hint: Template literal types produce exact combined string types [OK]
      Common Mistakes:
      • Thinking the type is a union of 'hello' and 'world'
      • Assuming it is a generic string
      • Confusing the template literal syntax with a string literal
      4. Identify the error in the following TypeScript code using template literal types:
      type Prefix = 'pre';
      type Suffix = 'fix';
      type Combined = `${Prefix + Suffix}`;
      
      const word: Combined = 'prefix';
      medium
      A. Missing backticks around the template literal
      B. The variable word has wrong value assigned
      C. Using + operator inside template literal types is invalid
      D. Prefix and Suffix types must be numbers

      Solution

      1. Step 1: Check template literal syntax

        Inside template literal types, you cannot use the + operator to concatenate types; you embed types directly with ${}.
      2. Step 2: Identify the error

        The expression `${Prefix + Suffix}` is invalid syntax. It should be `${Prefix}${Suffix}` without +.
      3. Final Answer:

        Using + operator inside template literal types is invalid -> Option C
      4. Quick Check:

        Template literal types concatenate by adjacent ${} without + [OK]
      Hint: No + inside template literal types; just place ${} side by side [OK]
      Common Mistakes:
      • Using + operator inside template literal types
      • Confusing runtime string concatenation with type syntax
      • Assuming types must be numbers to concatenate
      5. You want to create a type EventName that represents strings like 'click_button' or 'hover_link' by combining event types 'click' | 'hover' and target types 'button' | 'link' separated by an underscore. Which of the following correctly defines EventName?
      hard
      A. type EventName = `${click | hover}_${button | link}`;
      B. type EventName = `${'click' | 'hover'}_${'button' | 'link'}`;
      C. type EventName = `${'click' & 'hover'}_${'button' & 'link'}`;
      D. type EventName = '${click | hover}_${button | link}';

      Solution

      1. Step 1: Understand union types in template literals

        Using union types inside ${} creates all combinations of the union members.
      2. Step 2: Check syntax correctness

        type EventName = `${'click' | 'hover'}_${'button' | 'link'}`; correctly uses backticks and unions inside ${} with an underscore between them. type EventName = '${click | hover}_${button | link}'; uses single quotes and invalid syntax. type EventName = `${'click' & 'hover'}_${'button' & 'link'}`; uses & which means intersection, not union, so it won't produce combinations. type EventName = `${click | hover}_${button | link}`; misses quotes around string literals.
      3. Final Answer:

        type EventName = `${'click' | 'hover'}_${'button' | 'link'}`; -> Option B
      4. Quick Check:

        Union types inside template literals create all string combinations [OK]
      Hint: Use unions inside ${} with backticks to create all string combos [OK]
      Common Mistakes:
      • Using & instead of | for unions
      • Omitting quotes around string literals
      • Using single quotes instead of backticks
      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