TypeScript-da protected modifikatori

Xususiy xususiyatlar va metodlar vorislik orqali o'tmaydi. Ba'zida, shunday bo'ladiki, biz xususiyat yoki metod tashqaridan kirish mumkin bo'lmasin, lekin voris tomonidan meros qilib olinishi kerak. Bunday hollarda protected modifikatoridan foydalanish kerak.

Keling, amalda sinab ko'raylik. User klassimizda cape metodini protected modifikatori yordamida himoyalangan qilib e'lon qilaylik:

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

User klasidan voris oladigan Student klasini yaratamiz:

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

Ismni chiqaradigan metod qo'shamiz:

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

Endi voris metodining ichida ota-klassning himoyalangan metodidan foydalanamiz:

typescriptclass Student extends User {
  private name: string;
  
  constructor(name: string) {
    super();
    this.name = name;
  }
  
  public showName(): string {
    return this.cape(this.name); // ota-klass metodidan foydalanamiz
  }
}

Klassimizning ob'ektini yaratamiz:

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

Studentni chiqarish uchun metoddan foydalanamiz:

typescriptconsole.log(student.showName());

cape metodini klass tashqarisidan chaqirishga urinish esa xatolikka olib keladi:

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

Quyidagi klass berilgan:

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

Ushbu klasdan Employee klasini voris qiling, u himoyalangan salary xususiyatini qo'shsin, shuningdek, o'zining va meros qilib olingan barcha xususiyatlarning getterlarini qo'shsin.