Modifikatoren protected i TypeScript
Private egenskaper og metoder arves ikke
av etterkommere. Noen ganger trenger vi imidlertid at
en egenskap eller metode ikke er tilgjengelig utenfra,
men arves av etterkommere. I dette
tilfellet bør modifikatoren
protected brukes.
La oss prøve det i praksis. La oss deklarere en
metode cape i
klassen vår User
som beskyttet ved hjelp av modifikatoren protected:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
La oss lage en klasse Student som arver
fra klassen User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
La oss legge til en metode som viser navnet:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
Og la oss nå bruke den beskyttede metoden fra forelderen inni en metode i etterkommeren:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // bruker forelderens metode
}
}
La oss opprette et objekt av klassen vår:
let student: Student = new Student('john');
La oss bruke metoden for å vise studenten:
console.log(student.showName());
Men et forsøk på å kalle metoden cape
utenfor klassen vil føre til en feil:
console.log(student.cape('test')); // feil
Følgende klasse er gitt:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Arv fra denne klassen en klasse Employee,
som vil legge til en beskyttet egenskap salary,
samt gettere for alle egenskaper, både egne
og arvede.