Modifikator protected u TypeScript-u

Privatna svojstva i metode se ne nasleđuju od potomaka. Međutim, ponekad nam je potrebno da svojstvo ili metod ne budu dostupni spolja, ali da budu nasleđeni od potomaka. U ovom slučaju treba koristiti modifikator protected.

Hajde da isprobamo u praksi. Deklarišimo u našoj klasi User metod cape kao zaštićeni pomoću modifikatora protected:

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

Napravimo klasu Student, koja nasleđuje od klase User:

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

Dodajmo metod koji ispisuje ime:

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

A sada upotrebimo zaštićeni metod roditelja unutar metoda potomka:

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

Kreirajmo objekat naše klase:

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

Iskoristimo metod za ispis studenta:

typescriptconsole.log(student.showName());

Međutim, pokušaj da se pozove metod cape spolja klase će dovesti do greške:

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

Data je sledeća klasa:

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

Nasledite od ove klase klasu Employee, koja će dodati zaštićeno svojstvo salary, kao i gettere svih svojstava, kako svojih, tako i nasleđenih.