Modifikaator protected TypeScriptis
Privaatsed omadused ja meetodid ei pärine
järglastelt. Mõnikord vajame aga, et
omadus või meetod ei oleks väliselt kättesaadav,
kuid oleks päritud järglaste poolt. Sel
juhul tuleks kasutada modifikaatorit
protected.
Proovime seda praktikas. Deklareerime oma
klassis User meetodi cape
kui kaitstud, kasutades modifikaatorit protected:
typescriptclass User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Teeme klassi Student, mis pärineb
klassist User:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Lisame meetodi, mis kuvab nime:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
Ja nüüd kasutame kaitstud meetodit vanemast klassi last klassi meetodi sees:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // kasutame vanema meetodit
}
}
Loome oma klassi objekti:
typescriptlet student: Student = new Student('john');
Kasutame meetodit õpilase väljastamiseks:
typescriptconsole.log(student.showName());
Kuid katse kutsuda meetodit cape
klassist väljapoolt viib veani:
typescriptconsole.log(student.cape('test')); // viga
Antud on järgmine klass:
typescriptclass User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Pärinege sellest klassist klass Employee,
mis lisab kaitstud omaduse salary,
ning getterid kõikidele omadustele, nii enda
kui ka päritud omadustele.