Модификаторът 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,
както и гетъри за всички свойства, както собствени,
така и наследени.