Bird
Raised Fist0
Typescriptprogramming~5 mins

Nullish coalescing with types in Typescript

Choose your learning style10 modes available
Introduction

Nullish coalescing helps you pick a default value when something is null or undefined. It makes your code safer and clearer.

When you want to give a default value if a variable might be null or undefined.
When reading user input that might be missing or empty.
When working with optional function parameters.
When you want to avoid errors from accessing null or undefined values.
When you want to keep your code simple and readable instead of using many if checks.
Syntax
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.

Examples
Here, value is null, so it returns the default string.
Typescript
const example1 = new Example(null);
console.log(example1.getValueOrDefault());
Here, value is undefined, so it also returns the default string.
Typescript
const example2 = new Example(undefined);
console.log(example2.getValueOrDefault());
Here, value is an empty string, which is NOT nullish, so it returns the empty string.
Typescript
const example3 = new Example("");
console.log(example3.getValueOrDefault());
Here, value is a normal string, so it returns that string.
Typescript
const example4 = new Example("hello");
console.log(example4.getValueOrDefault());
Sample Program

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.

Typescript
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());
OutputSuccess
Important Notes

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.

Summary

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

(1/5)
1.

What does the nullish coalescing operator ?? do in TypeScript?

easy
A. Throws an error if the left value is null or undefined.
B. Returns the right value if the left value is any falsy value like 0 or empty string.
C. Always returns the left value regardless of its content.
D. Returns the right value only if the left value is null or undefined.

Solution

  1. Step 1: Understand nullish coalescing behavior

    The operator ?? checks if the left value is null or undefined.
  2. Step 2: Determine when right value is returned

    If the left value is null or undefined, it returns the right value; otherwise, it returns the left value.
  3. Final Answer:

    Returns the right value only if the left value is null or undefined. -> Option D
  4. Quick Check:

    Null or undefined triggers right value [OK]
Hint: Only null or undefined triggers right side [OK]
Common Mistakes:
  • Confusing with || operator that checks all falsy values
  • Thinking 0 or empty string triggers right value
  • Assuming it throws errors on null or undefined
2.

Which of the following is the correct syntax to use nullish coalescing in TypeScript?

const value = input ?? 'default';
easy
A. const value = input ?? 'default';
B. const value = input ??= 'default';
C. const value = input || 'default';
D. const value = input ? 'default' : input;

Solution

  1. 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.
  2. 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.
  3. Final Answer:

    const value = input ?? 'default'; -> Option A
  4. Quick Check:

    Correct nullish coalescing syntax uses ?? [OK]
Hint: Look for ?? between values, not ?: or || [OK]
Common Mistakes:
  • Using || which treats 0 or empty string as false
  • Confusing with ternary operator syntax
  • Using invalid operators like ??=
3.

What is the output of this TypeScript code?

let name: string | null = "";
const displayName = name ?? "Guest";
console.log(displayName);
medium
A. "Guest"
B. null
C. "" (empty string)
D. undefined

Solution

  1. Step 1: Check the value of name

    The variable name is an empty string "", which is NOT null or undefined.
  2. Step 2: Apply nullish coalescing operator

    Since name is not null or undefined, name ?? "Guest" returns the left value, which is "" (empty string).
  3. Final Answer:

    "" (empty string) -> Option C
  4. Quick Check:

    Empty string is not nullish, so left value stays [OK]
Hint: Empty string is NOT nullish, so ?? returns left [OK]
Common Mistakes:
  • Assuming empty string triggers right side
  • Confusing ?? with || operator
  • Expecting 'Guest' instead of empty string
4.

Identify the error in this TypeScript code using nullish coalescing:

let count: number | undefined = 0;
const result = count ?? 10;
console.log(result);
medium
A. Error: nullish coalescing cannot be used with numbers
B. No error; output is 0
C. Error: count cannot be 0
D. Error: must use || instead of ??

Solution

  1. Step 1: Analyze the value of count

    The variable count is 0, which is NOT null or undefined.
  2. Step 2: Apply nullish coalescing operator

    Since count is 0 (a valid number), count ?? 10 returns 0, no error occurs.
  3. Final Answer:

    No error; output is 0 -> Option B
  4. Quick Check:

    0 is not nullish, so left value returned [OK]
Hint: 0 is valid, ?? returns left, no error [OK]
Common Mistakes:
  • Thinking 0 triggers right side fallback
  • Believing ?? cannot be used with numbers
  • Confusing ?? with || operator
5.

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
}
hard
A. return input ?? "No input";
B. return input || "No input";
C. return input ? input : "No input";
D. return input === null || input === undefined ? "No input" : input;

Solution

  1. Step 1: Understand the requirement

    Return input if it is NOT null or undefined; otherwise, return "No input".
  2. Step 2: Choose the best nullish coalescing usage

    input ?? "No input" returns input if it is not nullish, else "No input". This is concise and clear.
  3. Final Answer:

    return input ?? "No input"; -> Option A
  4. Quick Check:

    ?? returns left unless null/undefined [OK]
Hint: Use ?? to check only null or undefined [OK]
Common Mistakes:
  • Using || which treats empty string as false
  • Using ternary unnecessarily
  • Checking null and undefined manually instead of ??
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