Pengubah protected dalam TypeScript
Sifat dan kaedah peribadi tidak diwarisi
oleh keturunan. Kadang-kadang, bagaimanapun, kita perlu agar
sifat atau kaedah tidak boleh diakses dari luar,
tapi diwarisi oleh keturunan. Dalam kes ini
, pengubah
protected harus digunakan.
Mari kita cuba dalam amalan. Isytiharkan dalam
kelas User kami kaedah cape
sebagai dilindungi dengan menggunakan pengubah protected:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Mari buat kelas Student, yang mewarisi
dari kelas User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Tambahkan kaedah yang memaparkan nama:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
Dan sekarang gunakan kaedah terlindung induk di dalam kaedah keturunan:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // menggunakan kaedah induk
}
}
Mari buat objek kelas kami:
let student: Student = new Student('john');
Gunakan kaedah untuk memaparkan pelajar:
console.log(student.showName());
Namun, percubaan untuk memanggil kaedah cape
dari luar kelas akan menyebabkan ralat:
console.log(student.cape('test')); // ralat
Diberi kelas berikut:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Warisi dari kelas ini kelas Employee,
yang akan menambah sifat terlindung salary,
serta getter semua sifat, baik sendiri
maupun yang diwarisi.