Modifikatoren protected i TypeScript
Private egenskaber og metoder nedarves ikke
af efterkommere. Nogle gange har vi dog brug for, at
en egenskab eller metode ikke er tilgængelig udefra,
men nedarves af efterkommere. I dette
tilfælde bør du bruge modifikatoren
protected.
Lad os prøve det i praksis. Lad os erklære en
metode cape i vores klasse User
som beskyttet ved hjælp af modifikatoren protected:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Lad os lave en klasse Student, som arver
fra klassen User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Lad os tilføje en metode, der viser navnet:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
Og lad os nu bruge den beskyttede metode fra forælderen inde i efterkommerens metode:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // bruger forælderens metode
}
}
Lad os oprette et objekt af vores klasse:
let student: Student = new Student('john');
Lad os bruge metoden til at vise studenten:
console.log(student.showName());
Men et forsøg på at kalde metoden cape
udefra klassen vil føre til en fejl:
console.log(student.cape('test')); // fejl
Følgende klasse er givet:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Arv fra denne klasse en klasse Employee,
der tilføjer en beskyttet egenskab salary,
samt gettere for alle egenskaber, både egne
og arvede.