Modificador protected em TypeScript
Propriedades e métodos privados não são herdados
por classes filhas. No entanto, às vezes precisamos que
uma propriedade ou método não esteja acessível externamente,
mas seja herdado pelas classes filhas. Nesse
caso, devemos usar o modificador
protected.
Vamos experimentar na prática. Vamos declarar no
nosso classe User o método cape
como protegido usando o modificador protected:
typescriptclass User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Vamos fazer a classe Student, que herda
da classe User:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Vamos adicionar um método que exibe o nome:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
E agora vamos usar o método protegido da classe pai dentro de um método da classe filha:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // usando o método da classe pai
}
}
Vamos criar um objeto da nossa classe:
typescriptlet student: Student = new Student('john');
Vamos usar o método para exibir o nome do estudante:
typescriptconsole.log(student.showName());
Mas uma tentativa de chamar o método cape
de fora da classe resultará em um erro:
typescriptconsole.log(student.cape('test')); // erro
Dada a seguinte classe:
typescriptclass User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Herde desta classe a classe Employee,
que adicionará uma propriedade protegida salary,
assim como getters para todas as propriedades, tanto suas
quanto as herdadas.