Модификатор protected en TypeScript
Las propiedades y métodos privados no se heredan
por las clases descendientes. Sin embargo, a veces necesitamos que
una propiedad o método no esté disponible externamente,
pero sí sea heredado por las clases descendientes. En este
caso se debe usar el modificador
protected.
Probemos en la práctica. Declaremos en
nuestra clase User el método cape
como protegido usando el modificador protected:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Hagamos la clase Student, que herede
de la clase User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Añadamos un método que muestre el nombre:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
Y ahora usemos el método protegido del padre dentro de un método del descendiente:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // usamos el método del padre
}
}
Creemos un objeto de nuestra clase:
let student: Student = new Student('john');
Usemos el método para mostrar el estudiante:
console.log(student.showName());
Pero el intento de llamar al método cape
desde fuera de la clase resultará en un error:
console.log(student.cape('test')); // error
Dada la siguiente clase:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Herede de esta clase la clase Employee,
que agregará la propiedad protegida salary,
así como los getters de todas las propiedades, tanto propias,
como heredadas.