Modifieraren protected i TypeScript
Privata egenskaper och metoder ärvs inte
av underklasser. Ibland behöver vi dock att en
egenskap eller metod inte är tillgänglig utifrån,
men ärvs av underklasser. I det här
fallet bör modifieraren
protected användas.
Låt oss prova i praktiken. Låt oss deklarera en
metod cape i vår klass User
som skyddad med hjälp av modifieraren protected:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Låt oss skapa klassen Student som ärver
från klassen User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Låt oss lägga till en metod som visar namnet:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
Och nu använder vi den skyddade metoden från föräldraklassen inuti metoderna i underklassen:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // använder förälderns metod
}
}
Låt oss skapa ett objekt av vår klass:
let student: Student = new Student('john');
Låt oss använda metoden för att visa studentens namn:
console.log(student.showName());
Men ett försök att anropa metoden cape
utifrån klassen kommer att leda till ett fel:
console.log(student.cape('test')); // fel
Följande klass är given:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Ärv från denna klass en klass Employee,
som lägger till en skyddad egenskap salary,
samt getters för alla egenskaper, både egna
och ärvda.