Модификатор protected в TypeScript
Приватные свойства и методы не наследуются
потомками. Иногда, однако, нам нужно, чтобы
свойство или метод не были доступны извне,
но были унаследованы потомками.
В этом случае следует использовать
модификатор protected
.
Давайте попробуем на практике.
Объявим в нашем классе User
метод cape
как защищенный
с помощью модификатора protected
:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Сделаем класс Student
,
наследующий от класса User
:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Добавим метод, выводящий имя:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
А теперь используем защищенный метод родителя внутри метода потомка:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // используем метод родителя
}
}
Создадим объект нашего класса:
let student: Student = new Student('john');
Воспользуемся методом для вывода студента:
console.log(student.showName());
А вот попытка вызвать метод cape
снаружи класса приведет к ошибке:
console.log(student.cape('test')); //!! ошибка
Дан следующий класс:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Унаследуйте от этого класса класс
Employee
, который добавит защищенное
свойство salary
, а также геттеры
всех свойств, как своих, так и унаследованных.