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:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Laten we een klasse Student maken, die erft
van de klasse User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Laten we een methode toevoegen die de naam weergeeft:
class 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:
class 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:
let student: Student = new Student('john');
Laten we de methode gebruiken om de student weer te geven:
console.log(student.showName());
Maar een poging om de methode cape
van buiten de klasse aan te roepen, zal resulteren in een fout:
console.log(student.cape('test')); // fout
Gegeven de volgende klasse:
class 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.