Nullish coalescing helps you pick a default value when something is null or undefined. It makes your code safer and clearer.
Nullish coalescing with types in Typescript
class Example { value: string | null | undefined; constructor(value: string | null | undefined) { this.value = value; } getValueOrDefault(): string { return this.value ?? "default"; } }
The ?? operator returns the right side if the left side is null or undefined.
This is different from || which returns the right side for any falsy value like "" or 0.
value is null, so it returns the default string.const example1 = new Example(null); console.log(example1.getValueOrDefault());
value is undefined, so it also returns the default string.const example2 = new Example(undefined); console.log(example2.getValueOrDefault());
value is an empty string, which is NOT nullish, so it returns the empty string.const example3 = new Example(""); console.log(example3.getValueOrDefault());
value is a normal string, so it returns that string.const example4 = new Example("hello"); console.log(example4.getValueOrDefault());
This program shows how the nullish coalescing operator ?? works with different types of input values. It prints the result for null, undefined, empty string, and a normal string.
class Example { value: string | null | undefined; constructor(value: string | null | undefined) { this.value = value; } getValueOrDefault(): string { return this.value ?? "default"; } } const exampleNull = new Example(null); console.log("Null input:", exampleNull.getValueOrDefault()); const exampleUndefined = new Example(undefined); console.log("Undefined input:", exampleUndefined.getValueOrDefault()); const exampleEmptyString = new Example(""); console.log("Empty string input:", exampleEmptyString.getValueOrDefault()); const exampleHello = new Example("hello"); console.log("Hello input:", exampleHello.getValueOrDefault());
Time complexity: O(1) because it just checks a value.
Space complexity: O(1) no extra memory is used.
Common mistake: Using || instead of ?? can cause unexpected results with falsy values like empty strings or zero.
Use nullish coalescing when you want to treat only null or undefined as missing, not other falsy values.
Nullish coalescing ?? returns the right value only if the left is null or undefined.
It helps provide safe default values without hiding falsy but valid values like empty strings.
Use it to write cleaner and safer TypeScript code when dealing with optional or missing values.
Practice
What does the nullish coalescing operator ?? do in TypeScript?
Solution
Step 1: Understand nullish coalescing behavior
The operator??checks if the left value isnullorundefined.Step 2: Determine when right value is returned
If the left value isnullorundefined, it returns the right value; otherwise, it returns the left value.Final Answer:
Returns the right value only if the left value is null or undefined. -> Option DQuick Check:
Null or undefined triggers right value [OK]
- Confusing with || operator that checks all falsy values
- Thinking 0 or empty string triggers right value
- Assuming it throws errors on null or undefined
Which of the following is the correct syntax to use nullish coalescing in TypeScript?
const value = input ?? 'default';
Solution
Step 1: Identify correct nullish coalescing syntax
The operator??is used between two values to provide a fallback if the left is null or undefined.Step 2: Check each option
const value = input ?? 'default';:const value = input ?? 'default';uses??correctly. const value = input ? 'default' : input; uses ternary, const value = input ??= 'default'; uses nullish assignment??=, const value = input || 'default'; uses logical OR.Final Answer:
const value = input ?? 'default'; -> Option AQuick Check:
Correct nullish coalescing syntax uses ?? [OK]
- Using || which treats 0 or empty string as false
- Confusing with ternary operator syntax
- Using invalid operators like ??=
What is the output of this TypeScript code?
let name: string | null = ""; const displayName = name ?? "Guest"; console.log(displayName);
Solution
Step 1: Check the value of
The variablenamenameis an empty string "", which is NOT null or undefined.Step 2: Apply nullish coalescing operator
Sincenameis not null or undefined,name ?? "Guest"returns the left value, which is "" (empty string).Final Answer:
"" (empty string) -> Option CQuick Check:
Empty string is not nullish, so left value stays [OK]
- Assuming empty string triggers right side
- Confusing ?? with || operator
- Expecting 'Guest' instead of empty string
Identify the error in this TypeScript code using nullish coalescing:
let count: number | undefined = 0; const result = count ?? 10; console.log(result);
Solution
Step 1: Analyze the value of
The variablecountcountis 0, which is NOT null or undefined.Step 2: Apply nullish coalescing operator
Sincecountis 0 (a valid number),count ?? 10returns 0, no error occurs.Final Answer:
No error; output is 0 -> Option BQuick Check:
0 is not nullish, so left value returned [OK]
- Thinking 0 triggers right side fallback
- Believing ?? cannot be used with numbers
- Confusing ?? with || operator
You have a function that accepts an optional string parameter input. You want to return input if it is not null or undefined, but if it is, return the string "No input". Which is the best way to write this using nullish coalescing?
function getInput(input?: string): string {
// Fill in the return statement
}Solution
Step 1: Understand the requirement
Returninputif it is NOT null or undefined; otherwise, return "No input".Step 2: Choose the best nullish coalescing usage
input ?? "No input"returnsinputif it is not nullish, else "No input". This is concise and clear.Final Answer:
return input ?? "No input"; -> Option AQuick Check:
?? returns left unless null/undefined [OK]
- Using || which treats empty string as false
- Using ternary unnecessarily
- Checking null and undefined manually instead of ??
Ready to prove it?
Pass the test and this pattern moves unknown
