Bird
Raised Fist0
Typescriptprogramming~5 mins

Truthiness narrowing in Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is truthiness narrowing in TypeScript?
Truthiness narrowing is when TypeScript uses checks like if or ! to refine the type of a variable based on whether it is truthy or falsy.
Click to reveal answer
beginner
Which values are considered falsy in JavaScript and TypeScript?
The falsy values are: false, 0, '' (empty string), null, undefined, and NaN. Everything else is truthy.
Click to reveal answer
beginner
How does TypeScript narrow the type of a variable in this code?<br><pre>let value: string | null = getValue();
if (value) {
  // What is the type of value here?
}</pre>
Inside the if (value) block, TypeScript narrows value to string because null is falsy and filtered out.
Click to reveal answer
intermediate
What happens to the type of a variable after a if (!variable) check?
After if (!variable), TypeScript narrows the variable's type to only the falsy types it can be, excluding truthy ones.
Click to reveal answer
beginner
Why is truthiness narrowing useful in TypeScript?
It helps catch errors early by letting TypeScript know when a variable cannot be null or undefined, so you can safely use it without extra checks.
Click to reveal answer
Which of these values is truthy in TypeScript?
A"hello"
B"" (empty string)
Cnull
D0
Given let x: string | null;, what is the type of x inside if (x) block?
Astring | null
Bstring
Cnull
Dnever
What does if (!value) check for in TypeScript?
Avalue is falsy
Bvalue is a string
Cvalue is truthy
Dvalue is a number
Which of these is NOT a falsy value in TypeScript?
Aundefined
BNaN
C"false" (string)
D0
Why does TypeScript use truthiness narrowing?
ATo convert all variables to boolean
BTo make variables immutable
CTo remove all null values from code
DTo help safely use variables by refining their types based on runtime checks
Explain how TypeScript uses truthiness narrowing to refine variable types in conditional statements.
Think about how an if statement filters out falsy values.
You got /4 concepts.
    List the common falsy values in TypeScript and explain why knowing them helps with truthiness narrowing.
    Recall the basic falsy values from JavaScript.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does truthiness narrowing in TypeScript help you do inside an if statement?
      easy
      A. It forces TypeScript to ignore type errors.
      B. It converts all values to strings automatically.
      C. It tells TypeScript the value is not null, undefined, or falsy, so you can use it safely.
      D. It makes the code run faster by skipping checks.

      Solution

      1. Step 1: Understand what truthiness means

        Truthiness means a value is considered true in a boolean context, so it is not null, undefined, 0, empty string, or false.
      2. Step 2: Apply truthiness narrowing in TypeScript

        Inside an if statement, TypeScript narrows the type by excluding falsy values, letting you safely use the value without extra checks.
      3. Final Answer:

        It tells TypeScript the value is not null, undefined, or falsy, so you can use it safely. -> Option C
      4. Quick Check:

        Truthiness narrowing = safe value use [OK]
      Hint: If inside if(value), value is truthy and safe to use [OK]
      Common Mistakes:
      • Thinking it converts values to strings
      • Believing it skips type checks
      • Assuming it improves runtime speed
      2. Which of the following TypeScript if statements correctly uses truthiness narrowing?
      easy
      A. if (value == false) { console.log(value); }
      B. if (value === 0) { console.log(value); }
      C. if (value = true) { console.log(value); }
      D. if (value !== null && value !== undefined) { console.log(value); }

      Solution

      1. Step 1: Check each if condition for truthiness narrowing

        if (value !== null && value !== undefined) { console.log(value); } explicitly checks for not null and not undefined, which is a common way to narrow truthy values.
      2. Step 2: Identify incorrect syntax or logic

        if (value == false) { console.log(value); } checks if value is false (falsy), which is opposite of truthiness narrowing. if (value = true) { console.log(value); } uses assignment (=) instead of comparison (===). if (value === 0) { console.log(value); } checks if value equals 0, which is falsy, so it does not narrow to truthy.
      3. Final Answer:

        if (value !== null && value !== undefined) { console.log(value); } -> Option D
      4. Quick Check:

        Correct syntax and logic = if (value !== null && value !== undefined) { console.log(value); } [OK]
      Hint: Use !== null && !== undefined for safe truthiness checks [OK]
      Common Mistakes:
      • Using assignment (=) instead of comparison (===)
      • Checking for falsy instead of truthy
      • Confusing equality operators
      3. What will be the output of this TypeScript code?
      function printLength(str?: string) {
        if (str) {
          console.log(str.length);
        } else {
          console.log('No string');
        }
      }
      printLength('hello');
      printLength('');
      printLength();
      medium
      A. 5, No string, No string
      B. 5, 0, undefined
      C. 5, No string, undefined
      D. 5, 0, No string

      Solution

      1. Step 1: Analyze the if condition with truthiness narrowing

        The condition if (str) is true only if str is truthy. An empty string ('') is falsy, so it goes to else.
      2. Step 2: Check each function call output

        printLength('hello') prints 5 because 'hello' is truthy and length is 5.
        printLength('') prints 'No string' because '' is falsy.
        printLength() prints 'No string' because str is undefined (falsy).
      3. Final Answer:

        5, No string, No string -> Option A
      4. Quick Check:

        Falsy empty string triggers else [OK]
      Hint: Empty string is falsy, so else block runs [OK]
      Common Mistakes:
      • Assuming empty string is truthy
      • Expecting undefined to print length
      • Confusing falsy values with null only
      4. Find the error in this TypeScript code using truthiness narrowing:
      function process(value: string | null) {
        if (value !== null) {
          console.log(value.toUpperCase());
        } else {
          console.log('No value');
        }
      }
      process(null);
      process(undefined);
      medium
      A. The if condition should check for undefined as well as null.
      B. The code will cause a runtime error when value is undefined.
      C. The toUpperCase method is not valid for strings.
      D. There is no error; the code works fine.

      Solution

      1. Step 1: Check the type of value and condition

        Value can be string or null, but the function is called with undefined, which is not handled.
      2. Step 2: Identify missing check for undefined

        The if condition only excludes null, so if value is undefined, it will cause an error when calling toUpperCase.
      3. Final Answer:

        The if condition should check for undefined as well as null. -> Option A
      4. Quick Check:

        Check all falsy types to avoid errors [OK]
      Hint: Check both null and undefined for safe narrowing [OK]
      Common Mistakes:
      • Ignoring undefined values
      • Assuming null check covers undefined
      • Not testing all input cases
      5. Given this TypeScript code, what is the safest way to narrow the type of input to avoid errors when accessing input.length?
      function handleInput(input: string | null | undefined | number) {
        if (/* condition here */) {
          console.log(input.length);
        } else {
          console.log('Invalid input');
        }
      }
      hard
      A. if (input) { console.log(input.length); }
      B. if (typeof input === 'string' && input) { console.log(input.length); }
      C. if (input !== null) { console.log(input.length); }
      D. if (input != undefined) { console.log(input.length); }

      Solution

      1. Step 1: Identify all possible types of input

        Input can be string, null, undefined, or number. Only strings have a length property.
      2. Step 2: Narrow input to string and check truthiness

        Using typeof input === 'string' ensures input is a string type. Adding && input excludes empty strings (falsy) if needed.
      3. Final Answer:

        if (typeof input === 'string' && input) { console.log(input.length); } -> Option B
      4. Quick Check:

        Check type and truthiness for safe property access [OK]
      Hint: Check type string before accessing length [OK]
      Common Mistakes:
      • Only checking truthiness without type
      • Ignoring number type causing errors
      • Assuming null check covers undefined
      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