TypeScript-тегі protected модификаторы

Приваттік қасиеттер мен әдістер мұрагерлерге берілмейді. Кейде, бізге қасиет немесе әдіс сырттан қол жетімді болмауы керек, бірақ мұрагерлерде болуы керек. Бұл жағдайда protected модификаторын қолдану керек.

Тәжірибеде көрейік. User сыныбымызда cape әдісін protected модификаторымен қорғалған деп жариялайық:

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

User сыныбынан мұраға алған Student сыныбын жасайық:

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

Атын шығаратын әдісті қосамыз:

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

Енді әке әдісінің қорғалған әдісін мұрагер әдісінің ішінде қолданайық:

typescriptclass Student extends User {
  private name: string;
  
  constructor(name: string) {
    super();
    this.name = name;
  }
  
  public showName(): string {
    return this.cape(this.name); // әке әдісін қолдану
  }
}

Сыныбымыздың нысанын жасайық:

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

Студентті шығару үшін әдісті қолданайық:

typescriptconsole.log(student.showName());

Ал cape әдісін сырттан шақыруға тырысу қатеге әкеледі:

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

Мына сынып берілген:

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

Осы сыныптан Employee сыныбын мұраға алыңыз, ол қорғалған salary қасиетін қосады, сондай-ақ өздерінің де, мұраға алынғандардың да барлық қасиеттерінің геттерін қосады.