Recall & Review
beginner
What are excess property checks in TypeScript?
Excess property checks happen when you assign an object literal to a variable or parameter with a specific type, and TypeScript warns if the object has extra properties not defined in that type.
Click to reveal answer
beginner
Explain structural compatibility in TypeScript.
Structural compatibility means TypeScript compares the shape (properties and types) of two types to decide if one can be assigned to the other, ignoring the names of types.
Click to reveal answer
intermediate
Why does TypeScript allow extra properties when assigning variables but not with object literals?
TypeScript performs excess property checks only on object literals to catch typos or mistakes. When assigning variables, it trusts the variable's type and uses structural compatibility, allowing extra properties.
Click to reveal answer
intermediate
How can you bypass excess property checks when passing object literals?
You can assign the object literal to a variable first, or use a type assertion (like 'as') to tell TypeScript to trust the object shape, bypassing excess property checks.
Click to reveal answer
intermediate
Give an example where excess property checks cause an error but structural compatibility allows assignment.
Example: Passing {a: 1, b: 2, c: 3} directly to a function expecting {a: number, b: number} causes an error due to excess property 'c'. But assigning it to a variable first and then passing it works because of structural compatibility.
Click to reveal answer
What triggers excess property checks in TypeScript?
✗ Incorrect
Excess property checks happen only when assigning object literals directly to typed variables or parameters.
What does structural compatibility in TypeScript compare?
✗ Incorrect
Structural compatibility compares the shape, meaning the properties and their types, ignoring names.
Which of these will cause an excess property check error?
✗ Incorrect
Assigning an object literal with extra properties directly to a typed variable or parameter triggers excess property checks and causes an error.
How can you avoid excess property check errors when passing extra properties?
✗ Incorrect
Assigning the object literal to a variable first bypasses excess property checks due to structural compatibility.
Does TypeScript check excess properties when assigning variables to variables?
✗ Incorrect
TypeScript uses structural compatibility when assigning variables, so excess property checks do not apply.
Explain the difference between excess property checks and structural compatibility in TypeScript.
Think about when TypeScript warns about extra properties and when it allows them.
You got /4 concepts.
How can you handle a situation where an object literal has extra properties but you want to assign it to a type without errors?
Consider ways to bypass excess property checks safely.
You got /4 concepts.