Modifikatoren protected i TypeScript

Private egenskaper og metoder arves ikke av etterkommere. Noen ganger trenger vi imidlertid at en egenskap eller metode ikke er tilgjengelig utenfra, men arves av etterkommere. I dette tilfellet bør modifikatoren protected brukes.

La oss prøve det i praksis. La oss deklarere en metode cape i klassen vår User som beskyttet ved hjelp av modifikatoren protected:

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

La oss lage en klasse Student som arver fra klassen User:

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

La oss legge til en metode som viser navnet:

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

Og la oss nå bruke den beskyttede metoden fra forelderen inni en metode i etterkommeren:

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

La oss opprette et objekt av klassen vår:

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

La oss bruke metoden for å vise studenten:

typescriptconsole.log(student.showName());

Men et forsøk på å kalle metoden cape utenfor klassen vil føre til en feil:

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

Følgende klasse er gitt:

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

Arv fra denne klassen en klasse Employee, som vil legge til en beskyttet egenskap salary, samt gettere for alle egenskaper, både egne og arvede.