Die protected modifier in TypeScript

Private eienskappe en metodes word nie deur nakomelinge geërf nie. Soms, eger, het ons nodig dat 'n eienskap of metode nie van buite toeganklik is nie, maar wel deur nakomelinge geërf word. In hierdie geval moet die modifier protected gebruik word.

Kom ons probeer dit in die praktyk. Laat ons in ons klas User die metode cape as beskermd verklaar deur die modifier protected te gebruik:

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

Laat ons 'n klas Student maak, wat van die klas User erf:

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

Kom ons voeg 'n metode by wat die naam vertoon:

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

En nou gebruik ons die beskermde metode van die ouer binne 'n metode van die nakomeling:

typescriptclass Student extends User {
  private name: string;
  
  constructor(name: string) {
    super();
    this.name = name;
  }
  
  public showName(): string {
    return this.cape(this.name); // gebruik die metode van die ouer
  }
}

Kom ons skep 'n objek van ons klas:

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

Kom ons gebruik die metode om die student se naam te vertoon:

typescriptconsole.log(student.showName());

Maar 'n poging om die metode cape van buite die klas te roep sal tot 'n fout lei:

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

Die volgende klas word gegee:

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

Erf van hierdie klas 'n klas Employee, wat 'n beskermde eienskap salary sal byvoeg, sowel as getters vir alle eienskappe, beide sy eie en die geërfde eienskappe.