Bird
Raised Fist0
Typescriptprogramming~20 mins

Type alias for unions in Typescript - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Union Type Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of union type alias usage
What is the output of this TypeScript code when compiled and run with Node.js?
Typescript
type Status = "success" | "error";

function respond(status: Status): string {
  if (status === "success") {
    return "Operation succeeded";
  } else {
    return "Operation failed";
  }
}

console.log(respond("success"));
A"Operation succeeded"
BCompilation error
CTypeError at runtime
D"Operation failed"
Attempts:
2 left
💡 Hint
Check what the function returns when the input is "success".
❓ Predict Output
intermediate
2:00remaining
Value of variable with union type alias
What is the value of variable 'result' after running this code?
Typescript
type ID = number | string;

let userId: ID = 123;
userId = "abc";
const result = typeof userId;
A"number"
B"string"
C"undefined"
D"object"
Attempts:
2 left
💡 Hint
Look at the last assignment to userId and what typeof returns.
🔧 Debug
advanced
2:00remaining
Identify the error in union type alias usage
What error does this TypeScript code produce?
Typescript
type Response = { code: number } | { message: string };

function handleResponse(res: Response) {
  console.log(res.code);
}

handleResponse({ message: "Error" });
AType 'string' is not assignable to type 'number'.
BNo error, prints undefined
CProperty 'code' does not exist on type '{ message: string; }'.
DFunction handleResponse is missing return type
Attempts:
2 left
💡 Hint
Check if all union members have the property 'code'.
📝 Syntax
advanced
2:00remaining
Correct syntax for union type alias
Which option correctly defines a type alias 'Shape' that can be either 'circle' or 'square'?
Atype Shape = "circle" | "square";
Btype Shape = "circle", "square";
Ctype Shape = "circle" & "square";
Dtype Shape = ("circle" | "square")[];
Attempts:
2 left
💡 Hint
Union types use the pipe symbol | between types.
🚀 Application
expert
2:00remaining
Determine the number of possible values for a union type alias
Given this type alias, how many distinct values can a variable of type 'Level' hold?
Typescript
type Level = "low" | "medium" | "high" | 1 | 2 | 3;
A1
B3
C9
D6
Attempts:
2 left
💡 Hint
Count all unique literals in the union.

Practice

(1/5)
1.

What does a type alias for unions in TypeScript do?

easy
A. Defines a function that returns different types
B. Creates a new variable with multiple values
C. Gives a single name to multiple possible types
D. Declares a constant with union values

Solution

  1. Step 1: Understand the purpose of type alias

    A type alias lets you give a name to a type or group of types for easier use.
  2. Step 2: Understand union types

    A union type means a value can be one of several types, like string or number.
  3. Final Answer:

    Gives a single name to multiple possible types -> Option C
  4. Quick Check:

    Type alias for unions = single name for multiple types [OK]
Hint: Type alias names multiple types combined with | [OK]
Common Mistakes:
  • Thinking it creates variables instead of naming types
  • Confusing union with function return types
  • Assuming it declares constants
2.

Which of the following is the correct syntax to create a type alias MyType that can be either string or number?

easy
A. type MyType = string | number;
B. alias MyType = string & number;
C. type MyType = string & number;
D. alias MyType = string | number;

Solution

  1. Step 1: Recall correct keyword for type alias

    Use the keyword type to create a type alias, not alias.
  2. Step 2: Use union operator for multiple types

    The union operator is |, not &. So string | number is correct.
  3. Final Answer:

    type MyType = string | number; -> Option A
  4. Quick Check:

    type + union (|) = correct syntax [OK]
Hint: Use 'type' keyword and '|' for union types [OK]
Common Mistakes:
  • Using 'alias' instead of 'type'
  • Using '&' instead of '|' for unions
  • Mixing syntax from other languages
3.

What will be the output of the following TypeScript code?

type Status = "success" | "error";

function printStatus(s: Status) {
  console.log(s);
}

printStatus("success");
printStatus("error");
// printStatus("pending"); // Uncommenting this line causes error
medium
A. No output
B. success\nerror\npending
C. Error at runtime
D. success\nerror

Solution

  1. Step 1: Understand the type alias Status

    Status can only be "success" or "error" strings.
  2. Step 2: Check function calls

    Calling printStatus with "success" and "error" prints those values. "pending" is invalid and commented out.
  3. Final Answer:

    success\nerror -> Option D
  4. Quick Check:

    Valid union values print correctly [OK]
Hint: Only allowed union values print without error [OK]
Common Mistakes:
  • Assuming invalid union values print without error
  • Thinking it causes runtime error
  • Ignoring commented invalid call
4.

Identify the error in this TypeScript code using a type alias for unions:

type ID = number | string;

let userId: ID = true;
medium
A. Type 'boolean' is not assignable to type 'number | string'
B. Missing semicolon after type alias
C. Type alias cannot use union types
D. Variable 'userId' must be declared with 'const'

Solution

  1. Step 1: Check type alias definition

    ID allows only number or string values.
  2. Step 2: Check assigned value type

    Assigning true is boolean, which is not allowed by the union.
  3. Final Answer:

    Type 'boolean' is not assignable to type 'number | string' -> Option A
  4. Quick Check:

    Assigning wrong type causes error [OK]
Hint: Assigned value must match union types exactly [OK]
Common Mistakes:
  • Thinking union allows any type
  • Ignoring type mismatch errors
  • Confusing syntax errors with type errors
5.

Given the type alias type Response = { status: "ok"; data: string } | { status: "error"; error: string };, which of the following objects matches the Response type?

hard
A. { status: "ok", error: "File missing" }
B. { status: "ok", data: "File loaded" }
C. { status: "error", data: "File loaded" }
D. { status: "error", error: 404 }

Solution

  1. Step 1: Analyze the first union type

    When status is "ok", object must have a string property named data.
  2. Step 2: Analyze the second union type

    When status is "error", object must have a string property named error.
  3. Step 3: Check each option

    { status: "ok", data: "File loaded" } matches first type correctly. Options B and C mix properties incorrectly. { status: "error", error: 404 } has error property as number, not string.
  4. Final Answer:

    { status: "ok", data: "File loaded" } -> Option B
  5. Quick Check:

    Match status with correct property name and type [OK]
Hint: Match status value with correct property name and type [OK]
Common Mistakes:
  • Mixing properties from different union types
  • Using wrong property types
  • Ignoring the status-property relationship
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