Наследование TypeScript
Наследование — одна из основных концепций объектно-ориентированного программирования (ООП). Это механизм, в котором один класс получает свойства другого класса. Класс, который наследует свойства и методы, называется дочерним классом , а класс, свойства и методы которого наследуются, называется родительским классом . Наследование позволяет классу повторно использовать функциональность существующего класса, не переписывая его.
Наследование в TypeScript
JavaScript использует прототипное наследование, а не классическое наследование, такое как Java или C++. Typescript использует наследование на основе классов, которое является просто синтаксическим сахаром прототипного наследования. TypeScript поддерживает только одиночное наследование и многоуровневое наследование. В TypeScript класс наследует другой класс, используя ключевое слово extends .
Синтаксис:
class ChildClass extends ParentClass {
// Methods and fields
}Пример:
Javascript
class Vehicle{ honk(): void{ console.log("Vehicle Honks"); }}class Car extends Vehicle{ display(): void{ console.log("This is a Car"); }}let car = new Car();car.honk();car.display(); |
Vehicle Honks This is a Car
Объяснение: Здесь класс Car наследует метод honk() от класса Vehicle . Таким образом, класс Car может повторно использовать методы своего родительского класса.
Ключевое слово Super: TypeScript использует ключевые слова super для вызова свойств родительского класса. Ключевое слово super используется в основном
- Чтобы вызвать конструктор родительского класса
- Для вызова метода родительского класса
Пример: Возьмем пример класса Person, а класс Employee наследует класс Person.
Javascript
class Person { constructor(private firstName: string, private lastName: string) { this.firstName = firstName; this.lastName = lastName; } getName(): string { return `I am ${this.firstName} ${this.lastName}.`; }}class Employee extends Person { constructor( firstName: string, lastName: string, private jobTitle: string) { // Invoking the constructor of the Person class super(firstName, lastName); } displayInfo(): void { console.log(super.getName()); console.log(`My Job title is ${this.jobTitle}`); }}let employee = new Employee("Mehul", "Sharma", "Web Developer"); employee.displayInfo(); |
Выход:
I am Mehul Sharma. My Job title is Web Developer.
Объяснение: Здесь класс Employee вызывает конструктор класса Person , используя super() для инициализации firstName и lastName . Он также вызывает getName() , используя super в своем собственном методе.
Переопределение метода: TypeScript также поддерживает переопределение метода. Возьмем тот же пример класса Employee , и этот класс переопределит метод класса Person .
Пример:
Javascript
class Person { constructor(private firstName: string, private lastName: string) { this.firstName = firstName; this.lastName = lastName; } displayInfo(): string { return `I am ${this.firstName} ${this.lastName}.`; }}class Employee extends Person { constructor( firstName: string, lastName: string, private jobTitle: string) { // Invoking the constructor of Person class super(firstName, lastName); } displayInfo(): string { return super.displayInfo() + `The job title is ${this.jobTitle}.`; }}let employee = new Employee("Mehul", "Sharma", "Web Developer"); console.log(employee.displayInfo()); |
Выход:
I am Mehul Sharma.The job title is Web Developer.
Вывод:
- Typescript использует ключевое слово extends для реализации наследования.
- Используя super() , дочерний класс может вызывать конструктор, свойства и методы родительского класса.
- TypeScript также поддерживает переопределение методов.