Kirekebishi protected katika TypeScript

Sifa na mbinu za kibinafsi hazirithiwi na wazao. Wakati mwingine, hata hivyo, tunahitaji sifa au mbinu isipatikane nje, lakini irithiwe na wazao. Katika hali hii inapaswa kutumia kirekebishi protected.

Wacha tujaribu kwa vitendo. Tangee katika darasa letu User mbinu cape kama ilinziwa kwa kutumia kirekebishi protected:

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

Tufanye darasa Student, linalorithi kutoka kwa darasa User:

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

Tuongeze mbinu, inayoonyesha jina:

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

Sasa tutumie mbinu iliyolindwa ya mzazi ndani ya mbinu ya mzao:

typescriptclass Student extends User {
  private name: string;
  
  constructor(name: string) {
    super();
    this.name = name;
  }
  
  public showName(): string {
    return this.cape(this.name); // tunatumia mbinu ya mzazi
  }
}

Tutengeneze kitu cha darasa letu:

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

Tutumie mbinu ya kuonyesha mwanafunzi:

typescriptconsole.log(student.showName());

Lakini jaribio la kuita mbinu cape ngje litasababisha hitilafu:

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

Kuna darasa lifuatalo:

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

Rithi kutoka kwa darasa hili darasa Employee, ambalo litaongeza sifa iliyolindwa salary, na pia vitafutaji vya sifa zote, zake mwenyewe, na zilizorithiwa.