Modifikatoren protected i TypeScript

Private egenskaber og metoder nedarves ikke af efterkommere. Nogle gange har vi dog brug for, at en egenskab eller metode ikke er tilgængelig udefra, men nedarves af efterkommere. I dette tilfælde bør du bruge modifikatoren protected.

Lad os prøve det i praksis. Lad os erklære en metode cape i vores klasse User som beskyttet ved hjælp af modifikatoren protected:

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

Lad os lave en klasse Student, som arver fra klassen User:

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

Lad os tilføje en metode, der viser navnet:

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

Og lad os nu bruge den beskyttede metode fra forælderen inde i efterkommerens metode:

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

Lad os oprette et objekt af vores klasse:

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

Lad os bruge metoden til at vise studenten:

typescriptconsole.log(student.showName());

Men et forsøg på at kalde metoden cape udefra klassen vil føre til en fejl:

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

Følgende klasse er givet:

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

Arv fra denne klasse en klasse Employee, der tilføjer en beskyttet egenskab salary, samt gettere for alle egenskaber, både egne og arvede.