protected մոդիֆիկատորը TypeScript-ում

Մասնավոր հատկություններն ու մեթոդները չեն ժառանգվում սերունդների կողմից: Սակայն երբեմն մեզ անհրաժեշտ է, որ հատկությունը կամ մեթոդը հասանելի չլինեն դրսից, բայց ժառանգվեն սերունդների կողմից: Այս դեպքում պետք է օգտագործել protected մոդիֆիկատորը:

Եկեք փորձարկենք գործնականում: Մեր User դասում cape մեթոդը հայտարարենք որպես պաշտպանված՝ օգտագործելով protected մոդիֆիկատորը:

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

Ստեղծենք Student դասը, որը ժառանգում է User դասից:

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 հատկությունը, ինչպես նաև բոլոր հատկությունների գետերներն էլ՝ ինչպես սեփականը, այնպես էլ ժառանգվածը։