Method overriding lets a child class change how a method works from its parent class. Using types helps keep the code safe and clear.
Method overriding with types in Typescript
class Parent { methodName(param: Type): ReturnType { // parent method code } } class Child extends Parent { methodName(param: Type): ReturnType { // child method code } }
The child method must have the same name as the parent method.
TypeScript checks that the parameter and return types match or are compatible.
Dog class changes how speak works but keeps the same types.class Animal { speak(sound: string): string { return `Animal says: ${sound}`; } } class Dog extends Animal { speak(sound: string): string { return `Dog barks: ${sound}`; } }
AdvancedCalculator overrides calculate to multiply instead of add.class Calculator { calculate(x: number, y: number): number { return x + y; } } class AdvancedCalculator extends Calculator { calculate(x: number, y: number): number { return x * y; } }
This program shows a parent class Vehicle with a method move. The child class Car overrides move to give a different message. Both methods use the same parameter and return types.
class Vehicle { move(distance: number): string { return `Vehicle moved ${distance} meters.`; } } class Car extends Vehicle { move(distance: number): string { return `Car drove ${distance} meters.`; } } const myVehicle = new Vehicle(); const myCar = new Car(); console.log(myVehicle.move(10)); console.log(myCar.move(10));
Overriding methods must keep compatible types to avoid TypeScript errors.
You can call the parent method inside the child method using super.methodName() if needed.
Method overriding lets child classes change parent methods.
TypeScript ensures the method types stay compatible.
This helps write clear and safe code with flexible behavior.
Practice
What does method overriding mean in TypeScript?
Solution
Step 1: Understand method overriding
Method overriding means a child class replaces a method defined in its parent class with its own version.Step 2: Identify correct description
A child class provides its own version of a method from the parent class. correctly describes this behavior as the child class providing its own method version.Final Answer:
A child class provides its own version of a method from the parent class. -> Option AQuick Check:
Method overriding = child method replaces parent method [OK]
- Thinking parent changes child methods
- Confusing overriding with deleting methods
- Believing overriding means calling method without arguments
Which of the following is the correct syntax for overriding a method greet() in a child class in TypeScript?
class Parent {
greet(): string {
return "Hello";
}
}
class Child extends Parent {
?
}Solution
Step 1: Check method signature compatibility
The child method must have the same name and compatible return type as the parent method. Parent returns string and takes no parameters.Step 2: Identify correct override
greet(): string { return "Hi"; } matches the parent's method signature exactly (no parameters, returns string). Others differ in return type or parameters.Final Answer:
greet(): string { return "Hi"; } -> Option DQuick Check:
Override method signature must match parent [OK]
- Changing return type to number
- Adding parameters not in parent method
- Omitting return type causing implicit any
What will be the output of this TypeScript code?
class Animal {
speak(): string {
return "Animal sound";
}
}
class Dog extends Animal {
speak(): string {
return "Bark";
}
}
const pet: Animal = new Dog();
console.log(pet.speak());Solution
Step 1: Understand polymorphism with method overriding
Even though the variable type is Animal, the actual object is Dog. The overridden method in Dog is called.Step 2: Determine method output
Dog's speak() returns "Bark", so console.log prints "Bark".Final Answer:
"Bark" -> Option AQuick Check:
Overridden method runs on actual object type [OK]
- Thinking parent method runs due to variable type
- Expecting undefined because of type mismatch
- Assuming runtime error for overridden method
Identify the error in this TypeScript code that tries to override a method:
class Vehicle {
move(distance: number): void {
console.log(`Moved ${distance} meters`);
}
}
class Car extends Vehicle {
move(distance: string): void {
console.log(`Car moved ${distance}`);
}
}Solution
Step 1: Check method signature compatibility
Parent method move() takes a number parameter. Child method move() takes a string parameter, which is incompatible.Step 2: Identify correct error cause
Parameter type in child method must match parent method's parameter type. correctly states this.Final Answer:
Parameter type in child method must match parent method's parameter type. -> Option CQuick Check:
Parameter types must be compatible in overriding [OK]
- Changing parameter types in child method
- Thinking return type void is invalid
- Believing method names must differ
Given these classes, which override is valid and why?
class Base {
calculate(value: number): number {
return value * 2;
}
}
class Derived extends Base {
calculate(value: number): number | string {
if (value > 10) return "Too large";
return value * 3;
}
}Solution
Step 1: Check return type compatibility in overriding
Parent method returns number only. Child method returns number or string, which is not compatible because string is not assignable to number.Step 2: Understand TypeScript's strict method overriding rules
TypeScript requires the child method's return type to be assignable to the parent's return type, not broader. Invalid because return type must exactly match parent's return type. correctly states this.Final Answer:
Invalid because return type must exactly match parent's return type. -> Option BQuick Check:
Return type must be compatible, not broader [OK]
- Allowing broader return types in child method
- Ignoring method name consistency
- Assuming any return type is allowed in override
Ready to prove it?
Pass the test and this pattern moves unknown
