Bird
Raised Fist0
Typescriptprogramming~5 mins

Optional properties in Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does it mean when a property in a TypeScript interface is marked with a question mark (e.g., name?: string)?
It means the property is optional. Objects implementing the interface may or may not include that property.
Click to reveal answer
beginner
How do you declare an optional property in a TypeScript interface?
Add a question mark ? after the property name, like age?: number.
Click to reveal answer
intermediate
Can optional properties be used with any type in TypeScript?
Yes, optional properties can be of any type, including primitives, objects, arrays, or even other interfaces.
Click to reveal answer
beginner
What happens if you access an optional property that is not provided in an object?
The property value will be undefined. You should check for undefined before using it.
Click to reveal answer
beginner
Why are optional properties useful in TypeScript?
They allow flexibility in object shapes, letting you define properties that might not always be present without causing errors.
Click to reveal answer
How do you mark a property as optional in a TypeScript interface?
AAdd an exclamation mark after the property name
BUse the keyword 'optional' before the property
CAdd a question mark after the property name
DUse the keyword 'nullable' before the property
What value does an optional property have if it is not provided in an object?
Anull
Bundefined
C0
Dempty string
Which of these is a valid optional property declaration in TypeScript?
Aname?: string
Bname!: string
Coptional name: string
Dname: string?
Can optional properties be used with complex types like arrays or objects?
AYes, any type can be optional
BNo, only primitive types can be optional
COnly arrays can be optional
DOnly objects can be optional
Why might you use optional properties in an interface?
ATo force all properties to be present
BTo make properties private
CTo make properties readonly
DTo allow some properties to be missing without errors
Explain how to declare and use optional properties in a TypeScript interface.
Think about how you make a property not required.
You got /4 concepts.
    Describe a real-life scenario where optional properties in TypeScript interfaces are helpful.
    Consider user data where some info is not always given.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the ? symbol mean when used in a TypeScript interface property like age?: number?
      easy
      A. The property is required and must always be present.
      B. The property is private and cannot be accessed outside the interface.
      C. The property is optional and may or may not be present in objects.
      D. The property is readonly and cannot be changed after initialization.

      Solution

      1. Step 1: Understand the meaning of ? in interfaces

        The ? after a property name marks it as optional, meaning it can be missing in objects that implement the interface.
      2. Step 2: Compare with other property types

        Required properties must always be present, private and readonly are unrelated concepts.
      3. Final Answer:

        The property is optional and may or may not be present in objects. -> Option C
      4. Quick Check:

        Optional property = property with ? [OK]
      Hint: Look for ? to spot optional properties quickly [OK]
      Common Mistakes:
      • Thinking ? means property is required
      • Confusing optional with readonly or private
      • Assuming optional properties must have a default value
      2. Which of the following is the correct syntax to declare an optional property email of type string in a TypeScript interface?
      easy
      A. email?: string
      B. optional email: string
      C. email: string?
      D. email: optional string

      Solution

      1. Step 1: Recall TypeScript optional property syntax

        Optional properties use a ? immediately after the property name, before the colon and type.
      2. Step 2: Check each option

        email?: string matches the correct syntax: email?: string. Others are invalid syntax.
      3. Final Answer:

        email?: string -> Option A
      4. Quick Check:

        Optional property syntax = name + ? + : + type [OK]
      Hint: Remember: ? goes right after property name [OK]
      Common Mistakes:
      • Placing ? after the type instead of property name
      • Using keywords like 'optional' which are invalid
      • Missing colon between property name and type
      3. Given this interface and object:
      interface User {
        id: number;
        name?: string;
      }
      
      const user: User = { id: 1 };
      console.log(user.name);

      What will be the output when running this code?
      medium
      A. undefined
      B. null
      C. An error because name is missing
      D. Empty string

      Solution

      1. Step 1: Understand optional property behavior

        The property name is optional and not provided in the object, so it is undefined.
      2. Step 2: Check console.log output

        Logging user.name prints undefined because the property is missing, not null or empty string.
      3. Final Answer:

        undefined -> Option A
      4. Quick Check:

        Missing optional property = undefined [OK]
      Hint: Missing optional properties are undefined, not errors [OK]
      Common Mistakes:
      • Expecting runtime error for missing optional property
      • Confusing undefined with null or empty string
      • Assuming default values are assigned automatically
      4. Identify the error in this TypeScript interface declaration:
      interface Product {
        id: number;
        description?: string = "No description";
      }
      medium
      A. The interface keyword is misspelled.
      B. The property id must be optional too.
      C. The equals sign = should be a colon :.
      D. Optional properties cannot have default values in interfaces.

      Solution

      1. Step 1: Check interface property syntax

        Interfaces only declare types; they cannot assign default values to properties.
      2. Step 2: Analyze the error

        The syntax description?: string = "No description" is invalid because default values are not allowed in interfaces.
      3. Final Answer:

        Optional properties cannot have default values in interfaces. -> Option D
      4. Quick Check:

        Interfaces declare types, no default values allowed [OK]
      Hint: Interfaces declare types only, no default values [OK]
      Common Mistakes:
      • Trying to assign default values inside interfaces
      • Confusing interfaces with classes or object literals
      • Ignoring TypeScript syntax rules for interfaces
      5. You want to create a function that accepts an object with optional middleName property and returns the full name. Which of these implementations correctly handles the optional property without errors?
      interface Person {
        firstName: string;
        middleName?: string;
        lastName: string;
      }
      
      function getFullName(person: Person): string {
        // Which code below is correct?
      }
      hard
      A. return `${person.firstName} ${person.middleName} ${person.lastName}`;
      B. return `${person.firstName} ${person.middleName ?? ''} ${person.lastName}`.trim();
      C. return `${person.firstName} ${person.middleName!} ${person.lastName}`;
      D. return person.firstName + person.middleName + person.lastName;

      Solution

      1. Step 1: Understand optional property usage

        The middleName may be undefined, so accessing it directly can cause unwanted 'undefined' in output.
      2. Step 2: Evaluate each option

        return `${person.firstName} ${person.middleName} ${person.lastName}`; inserts undefined if missing. return `${person.firstName} ${person.middleName ?? ''} ${person.lastName}`.trim(); uses nullish coalescing ?? to replace undefined with empty string and trims extra spaces. return `${person.firstName} ${person.middleName!} ${person.lastName}`; uses non-null assertion which can cause runtime errors if missing. return person.firstName + person.middleName + person.lastName; concatenates without spaces and can produce 'undefined' string.
      3. Final Answer:

        return `${person.firstName} ${person.middleName ?? ''} ${person.lastName}`.trim(); -> Option B
      4. Quick Check:

        Use ?? '' to safely handle optional strings [OK]
      Hint: Use nullish coalescing (?? '') to handle optional strings safely [OK]
      Common Mistakes:
      • Directly using optional property without checks
      • Using non-null assertion (!) unsafely
      • Concatenating without spaces or trimming
      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