Inheritance in TypeScript
Take your programming skills to the next level with interactive lessons and real-world projects.
Explore Coddy →Inheritance is a fundamental concept in object-oriented programming that TypeScript fully supports. It allows a class to inherit properties and methods from another class, promoting code reuse and establishing a hierarchical relationship between classes.
Basic Syntax
In TypeScript, you can create a derived class using the extends keyword. Here's a simple example:
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
move(distance: number = 0) {
console.log(`${this.name} moved ${distance}m.`);
}
}
class Dog extends Animal {
bark() {
console.log('Woof! Woof!');
}
}
In this example, Dog is a derived class that inherits from the Animal base class. The Dog class automatically gains the name property and move method from Animal.
Overriding Methods
Derived classes can override methods from the base class to provide specialized behavior. TypeScript uses the super keyword to call the base class constructor or methods.
class Snake extends Animal {
constructor(name: string) {
super(name);
}
move(distance: number = 5) {
console.log("Slithering...");
super.move(distance);
}
}
In this example, the Snake class overrides the move method but still calls the base class implementation using super.move().
Access Modifiers in Inheritance
TypeScript supports various access modifiers that affect how properties and methods are inherited:
public: Accessible from anywhere (default)protected: Accessible within the class and its subclassesprivate: Accessible only within the declaring class
Best Practices
- Use inheritance to model "is-a" relationships between classes.
- Avoid deep inheritance hierarchies, as they can become difficult to maintain.
- Consider using interfaces for more flexible code structures.
- Use the
protectedmodifier for properties and methods that should be accessible to subclasses but not to the public.
Advanced Concepts
TypeScript also supports more advanced inheritance concepts, such as:
- Abstract classes: Classes that cannot be instantiated and may contain abstract methods.
- Polymorphism: The ability to work with objects of different types through a common interface.
- Mixins: A way to combine multiple classes to create a new one with combined functionality.
Understanding these concepts will help you leverage the full power of inheritance in TypeScript and create more maintainable, scalable code.
Conclusion
Inheritance is a powerful feature in TypeScript that enables developers to create hierarchical relationships between classes. By mastering inheritance, you can write more efficient and organized code, taking full advantage of object-oriented programming principles in your TypeScript projects.