A union type allows a variable to hold values of different types, like a choice between multiple types.
Click to reveal answer
beginner
Why do we need union types instead of just one type?
Because sometimes a value can be more than one type, like a number or a string, and union types let us handle that safely.
Click to reveal answer
intermediate
How do union types help prevent errors?
They make sure you only use the allowed types and force you to check which type you have before using it, avoiding mistakes.
Click to reveal answer
beginner
Give an example of a union type in TypeScript.
Example: let value: number | string; means value can be a number or a string.
Click to reveal answer
beginner
What real-life situation is similar to union types?
Like a key that can open either your house or your car. You have one key but it works for two things, just like one variable can hold two types.
Click to reveal answer
What does a union type allow in TypeScript?
ANo types at all
BA variable to hold multiple types
COnly one fixed type
DOnly string types
✗ Incorrect
Union types let variables hold values of more than one type.
Which symbol is used to define a union type?
A|
B;
C:
D&
✗ Incorrect
The pipe symbol | is used to separate types in a union.
Why should you check the type of a union variable before using it?
ATo avoid runtime errors
BTo make code slower
CTo ignore type safety
DTo delete the variable
✗ Incorrect
Checking type ensures you use the variable correctly and avoid errors.
Which of these is a valid union type declaration?
Alet x: number & string;
Blet x: number string;
Clet x: number | string;
Dlet x: number/string;
✗ Incorrect
The correct syntax uses | to separate types.
What problem do union types solve?
AForcing variables to be undefined
BMaking variables only one type
CRemoving types completely
DAllowing variables to hold multiple possible types
✗ Incorrect
Union types let variables hold values of different types safely.
Explain why union types are useful in TypeScript with an example.
Think about variables that can hold more than one type.
You got /3 concepts.
Describe how union types help prevent errors in your code.
Consider what happens if you use a variable without knowing its type.
You got /3 concepts.
Practice
(1/5)
1. Why do we need union types in TypeScript? let value: string | number;
easy
A. To make variables immutable
B. To allow a variable to hold more than one type of value
C. To force variables to be only one type
D. To automatically convert types at runtime
Solution
Step 1: Understand union type declaration
The syntax string | number means the variable can hold either a string or a number.
Step 2: Identify the purpose of union types
This flexibility allows one variable to store multiple types safely without errors.
Final Answer:
To allow a variable to hold more than one type of value -> Option B
Quick Check:
Union types = multiple allowed types [OK]
Hint: Union types let variables hold multiple types safely [OK]
Common Mistakes:
Thinking union types make variables immutable
Believing union types force a single type only
Confusing union types with automatic type conversion
2. Which of the following is the correct syntax to declare a variable that can be a string or number in TypeScript?
easy
A. let data: string & number;
B. let data: string or number;
C. let data: string | number;
D. let data: string, number;
Solution
Step 1: Recall union type syntax
Union types use the pipe symbol | to separate types.
Step 2: Compare options
let data: string | number; uses | correctly, while others use invalid syntax.
Final Answer:
let data: string | number; -> Option C
Quick Check:
Union syntax uses | symbol [OK]
Hint: Use | to separate types in union declarations [OK]
Common Mistakes:
Using & instead of | for union types
Separating types with commas
Writing 'or' instead of |
3. What will be the output of this TypeScript code?
function format(value: string | number) {
if (typeof value === 'string') {
return value.toUpperCase();
} else {
return value.toFixed(2);
}
}
console.log(format('hello'));
console.log(format(3.14159));
medium
A. "HELLO" and 3
B. "hello" and "3.14159"
C. Error because value can be string or number
D. "HELLO" and "3.14"
Solution
Step 1: Analyze function behavior for string input
If input is a string, toUpperCase() converts it to uppercase, so 'hello' becomes 'HELLO'.
Step 2: Analyze function behavior for number input
If input is a number, toFixed(2) formats it to 2 decimal places, so 3.14159 becomes '3.14'.
Final Answer:
"HELLO" and "3.14" -> Option D
Quick Check:
String upper + number fixed decimals = output [OK]
Hint: Check type with typeof before calling type-specific methods [OK]
Common Mistakes:
Assuming no type check needed and causing errors
Expecting original number without formatting
Confusing toFixed output as number instead of string
4. Identify the error in this TypeScript code using union types:
function printLength(value: string | number) {
console.log(value.length);
}
printLength('test');
printLength(123);
medium
A. Error because number type has no 'length' property
B. Error because string type has no 'length' property
C. No error, code runs fine
D. Error because union types cannot be used in functions
Solution
Step 1: Understand property access on union types
Accessing length on value is unsafe because numbers don't have a length property.
Step 2: Identify the error cause
TypeScript will raise an error to prevent runtime failure when value is a number.
Final Answer:
Error because number type has no 'length' property -> Option A
Quick Check:
Accessing length on number causes error [OK]
Hint: Check type before accessing properties on union types [OK]
Common Mistakes:
Ignoring type checks and expecting no error
Thinking string has no length property
Believing union types disallow functions
5. You want a function that accepts either a string or an Array<string> and returns the total number of characters. Which is the best way to use union types to achieve this?
hard
A. function countChars(input: string | string[]) {
if (typeof input === 'string') {
return input.length;
} else {
return input.join('').length;
}
}
B. function countChars(input: string & string[]) {
return input.length;
}
C. function countChars(input: string | string[]) {
return input.length;
}
D. function countChars(input: any) {
return input.length;
}
Solution
Step 1: Understand input types and their length
A string has a length property; an array of strings also has length, but we want total characters, so we join the array first.
Step 2: Check union type handling
function countChars(input: string | string[]) {
if (typeof input === 'string') {
return input.length;
} else {
return input.join('').length;
}
} uses a type check to handle string and array separately, joining array elements to count total characters correctly.
Final Answer:
function countChars(input: string | string[]) { if (typeof input === 'string') { return input.length; } else { return input.join('').length; } } -> Option A
Quick Check:
Use type check and join array for total chars [OK]
Hint: Use typeof and array methods to handle union types properly [OK]
Common Mistakes:
Using intersection (&) instead of union (|)
Not checking type before accessing properties
Using any type losing type safety
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.