Type erasure means that TypeScript removes all type information when it compiles code to JavaScript. The types exist only during development and are not present at runtime.
Click to reveal answer
beginner
Why does TypeScript use type erasure?
TypeScript uses type erasure to keep the output JavaScript clean and compatible with all JavaScript environments, which do not support types natively.
Click to reveal answer
intermediate
What is a common consequence of type erasure when using generics in TypeScript?
Since types are erased, you cannot check or enforce generic types at runtime. For example, you can't check if a value matches a generic type parameter inside the compiled JavaScript.
Click to reveal answer
intermediate
How does type erasure affect debugging TypeScript code?
Because types are removed, debugging happens on plain JavaScript code. This means you can't see TypeScript types in runtime errors or logs, only JavaScript values.
Click to reveal answer
intermediate
Can you use type information at runtime in TypeScript? Why or why not?
No, you cannot use type information at runtime because TypeScript removes all types during compilation. To use type-like checks at runtime, you must write explicit JavaScript code or use libraries.
Click to reveal answer
What happens to TypeScript types after compilation?
AThey are converted to JavaScript classes
BThey are converted to runtime type checks
CThey are kept as comments in the JavaScript
DThey are removed and do not exist in the output JavaScript
✗ Incorrect
TypeScript removes all types during compilation, so the output JavaScript has no type information.
Why can't you check generic types at runtime in TypeScript?
ABecause TypeScript does not allow generics
BBecause generics are only a compile-time feature and erased in JavaScript
CBecause JavaScript does not support functions
DBecause generics are converted to strings
✗ Incorrect
Generics exist only during compilation and are erased, so runtime checks are not possible.
Which of these is a consequence of type erasure?
ATypeScript code cannot be compiled
BYour code runs slower because of type checks
CYou cannot rely on types during runtime
DTypes are available as JavaScript objects
✗ Incorrect
Since types are erased, you cannot use them at runtime.
How can you perform type-like checks at runtime in TypeScript?
ABy writing explicit JavaScript checks or using libraries
BBy relying on TypeScript's runtime type system
CBy enabling a special compiler flag
DBy using TypeScript enums
✗ Incorrect
TypeScript types are erased, so runtime checks must be done manually or with helper libraries.
What does type erasure help TypeScript achieve?
ACompatibility with JavaScript environments
BFaster runtime type checking
CAutomatic type inference at runtime
DKeeping types in the final code
✗ Incorrect
Removing types ensures the output runs anywhere JavaScript runs.
Explain what type erasure is and why TypeScript uses it.
Think about what happens to types when TypeScript turns into JavaScript.
You got /3 concepts.
Describe one consequence of type erasure when working with generics in TypeScript.
Consider what you cannot do with generic types after compilation.
You got /3 concepts.
Practice
(1/5)
1. What does type erasure mean in TypeScript?
easy
A. TypeScript removes all type information when compiling to JavaScript.
B. TypeScript keeps all type information in the final JavaScript code.
C. TypeScript converts types into runtime checks automatically.
D. TypeScript adds extra type annotations in the JavaScript output.
Solution
Step 1: Understand TypeScript compilation
TypeScript compiles to JavaScript by removing all type annotations and interfaces.
Step 2: Define type erasure meaning
This removal of type info is called type erasure, meaning types exist only during development, not at runtime.
Final Answer:
TypeScript removes all type information when compiling to JavaScript. -> Option A
Quick Check:
Type erasure = types removed at compile time [OK]
Hint: Remember: TypeScript types vanish in JavaScript output [OK]
Common Mistakes:
Thinking types exist at runtime
Believing TypeScript adds runtime type checks
Confusing type erasure with type inference
2. Which of the following is the correct way to check a variable's type at runtime in TypeScript?
easy
A. Using typeof operator in JavaScript code.
B. Using TypeScript type annotations like string in if statements.
C. Using TypeScript interfaces to check types at runtime.
D. Using instanceof with TypeScript types.
Solution
Step 1: Recall type erasure effect
TypeScript types do not exist at runtime, so you cannot use them in runtime checks.
Step 2: Identify runtime type check method
JavaScript's typeof operator works at runtime to check primitive types like string or number.
Final Answer:
Using typeof operator in JavaScript code. -> Option A
Quick Check:
Runtime type check = typeof operator [OK]
Hint: Use JavaScript's typeof for runtime type checks [OK]
Common Mistakes:
Trying to use TypeScript types at runtime
Using interfaces for runtime checks
Confusing instanceof with TypeScript types
3. What will be the output of this TypeScript code after compilation and running in JavaScript?
function isString(value: any): boolean {
return typeof value === 'string';
}
console.log(isString(123));
console.log(isString('hello'));
medium
A. true\ntrue
B. false\nfalse
C. false\ntrue
D. TypeError at runtime
Solution
Step 1: Understand the function logic
The function returns true if the input's JavaScript type is 'string', false otherwise.
Step 2: Evaluate the calls
For 123, typeof is 'number', so returns false. For 'hello', typeof is 'string', so returns true.
Hint: Check typeof results for each input value [OK]
Common Mistakes:
Assuming TypeScript types affect runtime
Expecting true for number input
Confusing output order
4. Identify the error in this TypeScript code that tries to check if value is a number at runtime:
function checkNumber(value: any): boolean {
if (value instanceof number) {
return true;
}
return false;
}
medium
A. The function should use typeof value === 'number' instead.
B. The function should use value.constructor === Number.
C. The function is correct and will return true for numbers.
D. Using instanceof with a primitive type causes a runtime error.
Solution
Step 1: Understand instanceof usage
instanceof works with objects, not primitive types like number.
Step 2: Identify error cause
Using value instanceof number causes a runtime error because number is not a constructor function.
Final Answer:
Using instanceof with a primitive type causes a runtime error. -> Option D
Quick Check:
instanceof with primitives = error [OK]
Hint: Use typeof for primitives, not instanceof [OK]
Common Mistakes:
Using instanceof with primitive types
Thinking instanceof works like typeof
Ignoring runtime errors from wrong instanceof usage
5. Given that TypeScript types are erased at runtime, how can you safely handle different input types in a function that accepts string | number and returns their length or value doubled?
function process(input: string | number) {
// What is the best way to handle types here?
}
hard
A. Rely on TypeScript types only and assume input is always correct at runtime.
B. Use JavaScript runtime checks like typeof to distinguish types and process accordingly.
C. Use instanceof to check if input is a string or number.
D. Convert input to string and always return its length.
Solution
Step 1: Recall type erasure impact
TypeScript types do not exist at runtime, so runtime checks must use JavaScript operators.
Step 2: Choose correct runtime check
Using typeof lets you detect if input is 'string' or 'number' and handle each case safely.
Step 3: Avoid incorrect methods
Relying only on TypeScript types or using instanceof with primitives is unsafe or incorrect.
Final Answer:
Use JavaScript runtime checks like typeof to distinguish types and process accordingly. -> Option B
Quick Check:
Runtime type safety = typeof checks [OK]
Hint: Always check types at runtime with typeof for unions [OK]
Common Mistakes:
Assuming TypeScript types exist at runtime
Using instanceof with primitives
Ignoring runtime type checks
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.