Access Modifiers (Visibility)
TypeScript memberikan kita kontrol penuh atas siapa yang boleh mengakses properti atau method dalam sebuah class. Ada 3 level akses:
1. Public (Bebas)
Ini adalah default. Bisa diakses dari mana saja (dalam class, kelas anak, maupun dari luar).
class Mobil {
public merk: string; // Tulis 'public' atau tidak, sama saja
constructor(merk: string) {
this.merk = merk;
}
}
const avanza = new Mobil("Toyota");
console.log(avanza.merk); // ✅ Boleh akses langsung
2. Private (Rahasia Pribadi)
Hanya bisa diakses di dalam class itu sendiri.
- Tidak bisa diakses dari luar.
- Tidak bisa diakses oleh kelas anak (
extends).
class Dompet {
private saldo: number;
constructor(saldoAwal: number) {
this.saldo = saldoAwal;
}
cekSaldo() {
return this.saldo; // ✅ Boleh (masih satu class)
}
}
const dompetku = new Dompet(50000);
// console.log(dompetku.saldo); // ❌ Error: Property 'saldo' is private
3. Protected (Warisan Keluarga)
Bisa diakses di dalam class dan kelas anak (turunan), tapi tidak bisa dari luar.
class OrangTua {
protected warisan: number = 1000000;
}
class Anak extends OrangTua {
ambilWarisan() {
return this.warisan; // ✅ Boleh (karena anak)
}
}
const bapak = new OrangTua();
// console.log(bapak.warisan); // ❌ Error: Protected cuma buat keluarga
Shortcut Constructor
TS punya cara cepat membuat properti langsung di parameter constructor.
// Cara Lama (Ribet)
class User {
nama: string;
constructor(nama: string) { this.nama = nama; }
}
// Cara Cepat TS (Langsung jadi properti)
class UserCepat {
constructor(public nama: string, private umur: number) {}
}