Le modificateur protected dans TypeScript

Les propriétés et méthodes privées ne sont pas héritées par les descendants. Cependant, parfois, nous avons besoin qu'une propriété ou méthode ne soit pas accessible de l'extérieur, mais soit héritée par les descendants. Dans ce cas, il convient d'utiliser le modificateur protected.

Essayons en pratique. Déclarons dans notre classe User une méthode cape comme protégée à l'aide du modificateur protected :

typescriptclass User {
  protected cape(str: string) {
    return str[0].toUpperCase() + str.slice(1);
  }
}

Créons une classe Student, héritant de la classe User :

typescriptclass Student extends User {
  private name: string;
  
  constructor(name: string) {
    super();
    this.name = name;
  }
}

Ajoutons une méthode affichant le nom :

typescriptclass Student extends User {
  private name: string;
  
  constructor(name: string) {
    super();
    this.name = name;
  }
  
  public showName(): string {
    return this.name;
  }
}

Et maintenant, utilisons la méthode protégée du parent à l'intérieur d'une méthode du descendant :

typescriptclass Student extends User {
  private name: string;
  
  constructor(name: string) {
    super();
    this.name = name;
  }
  
  public showName(): string {
    return this.cape(this.name); // utilisons la méthode du parent
  }
}

Créons un objet de notre classe :

typescriptlet student: Student = new Student('john');

Utilisons la méthode pour afficher l'étudiant :

typescriptconsole.log(student.showName());

En revanche, une tentative d'appeler la méthode cape de l'extérieur de la classe entraînera une erreur :

typescriptconsole.log(student.cape('test')); // erreur
Задание 1

La classe suivante est donnée :

typescriptclass User {
  protected name: string;
  protected surn: string;
  
  constructor(name: string, surn: string) {
    this.name = name;
    this.surn = surn;
  }
}

Héritez de cette classe une classe Employee, qui ajoutera une propriété protégée salary, ainsi que des getters pour toutes les propriétés, les siennes et celles héritées.