Bird
Raised Fist0
Typescriptprogramming~5 mins

Nullish coalescing with types in Typescript - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Nullish coalescing with types
O(n)
Understanding Time Complexity

We want to understand how fast code runs when using nullish coalescing with types in TypeScript.

Specifically, how does the number of steps change as input size grows?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


function getValue(input: string | null | undefined): string {
  return input ?? "default";
}

const results = [];
for (let i = 0; i < n; i++) {
  results.push(getValue(null));
}
    

This code uses nullish coalescing to provide a default string when input is null or undefined, repeated n times.

Identify Repeating Operations
  • Primary operation: The loop runs n times, calling getValue each time.
  • How many times: Exactly n times, where n is the input size.
How Execution Grows With Input

Each call to getValue is very fast and constant time, but we do it n times in the loop.

Input Size (n)Approx. Operations
1010 simple checks and returns
100100 simple checks and returns
10001000 simple checks and returns

Pattern observation: The total work grows directly with n, so doubling n doubles the work.

Final Time Complexity

Time Complexity: O(n)

This means the time to finish grows in a straight line as the input size grows.

Common Mistake

[X] Wrong: "Nullish coalescing makes the code run instantly regardless of input size."

[OK] Correct: Even though each check is quick, doing it many times adds up linearly with input size.

Interview Connect

Understanding how simple operations inside loops add up helps you explain performance clearly in interviews.

Self-Check

"What if we replaced the loop with a recursive call that processes the input n times? How would the time complexity change?"

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