Наследование 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 также поддерживает переопределение методов.