Modifikuesi protected në TypeScript

Vetitë dhe metodat private nuk trashëgohen nga pasardhësit. Megjithatë, ndonjëherë ne kemi nevojë që një veti ose metodë të mos jetë e arritshme nga jashtë, por të jetë e trashëguar nga pasardhësit. Në këtë rast duhet të përdoret modifikuesi protected.

Le ta provojmë në praktikë. Le të deklarojmë në klasën tonë User metodën cape si të mbrojtur duke përdorur modifikuesin protected:

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

Le të krijojmë klasën Student, që trashëgon nga klasa User:

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

Le të shtojmë një metodë që shfaq emrin:

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

Dhe tani le të përdorim metodën e mbrojtur të prindit brenda metodës së pasardhësit:

typescriptclass Student extends User {
  private name: string;
  
  constructor(name: string) {
    super();
    this.name = name;
  }
  
  public showName(): string {
    return this.cape(this.name); // përdorim metodën e prindit
  }
}

Le të krijojmë një objekt të klasës sonë:

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

Le të përdorim metodën për të shfaqur studentin:

typescriptconsole.log(student.showName());

Por një përpjekje për të thirrur metodën cape nga jashtë klasës do të rezultojë në gabim:

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

Jepet klasa e mëposhtme:

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

Trashëgoni nga kjo klasë klasën Employee, e cila do të shtojë vetinë e mbrojtur salary, si dhe getters për të gjitha vetitë, si të vetat, ashtu edhe ato të trashëguara.