Модификатори private дар TypeScript
Модификатори private дар он ҳолатҳо истифода мешавад, ки ба хосиятҳо ва усулҳо аз беруни синф дастрасиро пӯшидан лозим бошад. Дар ин ҳолат, ҳатто дар синфҳои фарзандҳо низ ба ин хосиятҳо дастрасӣ пайдо кардан мумкин нест.
Биёед мисолро бубинем. Дар синфи User хосияти махсусии name созем:
class User {
private name: string;
constructor(name: string) {
this.name = name;
}
}
Объекти синфро созем, ки дар конструктор арзиши хосияти моро интиқол медиҳад:
let user: User = new User('john');
Ҳоло кӯшиши хондани ин хосияти махсус аз беруни синф ба хатогӣ меорад:
console.log(user.name); // хатогӣ
Инчунин кӯшиши навиштани чизе ба ин хосият аз беруни синф низ ба хатогӣ меорад:
user.name = 'eric'; // хатогӣ
Аммо дар дохили усулҳои синф имкон пайдо мешавад, ки ҳам арзиши хосияти махсусимонро хонем, ҳам тағирот дар он ворид кунем:
class User {
private name: string;
constructor(name: string) {
this.name = name;
}
public getName() {
return this.name; // хосиятро мехонем
}
public setName(name: string) {
this.name = name; // арзиши нави хосиятро менависем
}
}
Синфи User-ро созед, ки хосиятҳои махсуси ном ва синну солро дар бар мегирад. Бигзор арзишҳои ибтидоии онҳо тавассути конструктор муқаррар карда шаванд.
Дар синфи User-и худ усулҳои оммавии getName ва getAge-ро созед, ки ба даст овардани арзишҳои хосиятҳои махсуси мувофиқро имкон медиҳанд.
Дар синфи User-и худ усулҳои оммавии setName ва setAge-ро созед, ки тағйир додани арзишҳои хосиятҳои махсуси мувофиқро имкон медиҳанд.