De protected modifier in TypeScript
Privé-eigenschappen en -methoden worden niet
geërfd door subklassen. Soms hebben we echter nodig dat een
eigenschap of methode niet van buitenaf toegankelijk is,
maar wel wordt geërfd door subklassen. In dat
geval moeten we de modifier
protected gebruiken.
Laten we het in de praktijk proberen. Laten we in
onze klasse User een methode cape
declareren als beschermd met behulp van de modifier protected:
typescriptclass User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Laten we een klasse Student maken, die erft
van de klasse User:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Laten we een methode toevoegen die de naam weergeeft:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
En laten we nu de beschermde methode van de ouderklasse gebruiken binnen een methode van de subklasse:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // gebruiken de methode van de ouder
}
}
Laten we een object van onze klasse aanmaken:
typescriptlet student: Student = new Student('john');
Laten we de methode gebruiken om de student weer te geven:
typescriptconsole.log(student.showName());
Maar een poging om de methode cape
van buiten de klasse aan te roepen, zal resulteren in een fout:
typescriptconsole.log(student.cape('test')); // fout
Gegeven de volgende klasse:
typescriptclass User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Erf van deze klasse een klasse Employee,
die een beschermde eigenschap salary toevoegt,
evenals getters voor alle eigenschappen, zowel zijn eigen,
als de geërfde.