Challenge - 5 Problems
Declaration Merging Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of merged interface properties
What is the output of the following TypeScript code when compiled and run with Node.js (using ts-node or similar)?
Typescript
interface User {
name: string;
}
interface User {
age: number;
}
const user: User = { name: "Alice", age: 30 };
console.log(user);Attempts:
2 left
💡 Hint
Think about how TypeScript merges interface declarations with the same name.
✗ Incorrect
In TypeScript, interfaces with the same name are merged. So the final User interface has both 'name' and 'age' properties. The object 'user' correctly implements both, so the console.log outputs the full object.
❓ Predict Output
intermediate2:00remaining
Merged interface method call output
What will be printed when running this TypeScript code?
Typescript
interface Logger {
log(message: string): void;
}
interface Logger {
error(message: string): void;
}
const logger: Logger = {
log: (msg) => console.log('LOG:', msg),
error: (msg) => console.error('ERROR:', msg)
};
logger.log('Hello');
logger.error('Oops');Attempts:
2 left
💡 Hint
Interfaces with the same name combine their members.
✗ Incorrect
The Logger interface merges both methods. The object implements both, so calling logger.log and logger.error prints both messages.
🔧 Debug
advanced2:30remaining
Why does this merged interface cause a type error?
Given the following code, why does TypeScript report an error on the variable 'person'?
Typescript
interface Person {
name: string;
}
interface Person {
name: number;
}
const person: Person = { name: 'Bob' };Attempts:
2 left
💡 Hint
Check the types of the 'name' property in both interface declarations.
✗ Incorrect
When interfaces merge, properties with the same name must have compatible types. Here, 'name' is string in one and number in the other, causing a conflict and a type error.
📝 Syntax
advanced2:00remaining
Which interface merging syntax is invalid?
Which of the following interface declarations will cause a TypeScript syntax error due to invalid merging?
Attempts:
2 left
💡 Hint
Look for conflicting property types in the same interface name.
✗ Incorrect
Option A declares 'theme' as string and number in the same interface name, causing a type conflict error. The others merge without syntax errors.
🚀 Application
expert3:00remaining
How many properties does the merged interface have?
Consider these interface declarations in TypeScript. How many properties does the merged interface 'Product' have?
Typescript
interface Product {
id: number;
name: string;
}
interface Product {
description?: string;
price: number;
}
interface Product {
price: number;
stock: number;
}Attempts:
2 left
💡 Hint
Count unique property names after merging all interfaces.
✗ Incorrect
The merged interface has properties: id, name, description, price, and stock. 'price' is repeated but counts once. So total 5 properties.