TypeScript menambahkan fitur penting di atas class JavaScript: access modifiers dan abstract classes.
Access Modifiers:
class User {
public nama: string // bisa diakses dari mana saja (default)
private password: string // hanya bisa diakses di dalam class ini
protected email: string // bisa diakses di class ini dan turunannya
}
Parameter Properties — shorthand untuk deklarasi + assignment:
// Sebelum:
class User {
nama: string
constructor(nama: string) { this.nama = nama }
}
// Sesudah:
class User {
constructor(public nama: string) {} // otomatis jadi property!
}
Abstract Classes — class yang tidak bisa di-instantiate, hanya bisa di-extend:
abstract class Shape {
abstract area(): number // HARUS diimplementasi oleh subclass
describe(): string { // boleh punya implementasi
return `Luas: ${this.area()}`
}
}
class Circle extends Shape {
constructor(private radius: number) { super() }
area(): number { return Math.PI * this.radius ** 2 }
}
Implements — class yang harus memenuhi kontrak interface:
interface Printable {
print(): string
}
class Report implements Printable {
print(): string { return "Laporan" }
}
readonly — property yang hanya bisa di-set di constructor:
class Config {
constructor(readonly apiUrl: string) {}
}