← Kembali ke kursus
Pelajaran kursus · Dart
Pelajaran 27

Extension type (Dart 3.3)

BARU Dart 3.3: zero-cost wrapper dengan tipe baru.

Pahami konsepnya

Extension type membungkus tipe existing menjadi tipe BARU tanpa biaya runtime: extension type Email(String nilai) — sekarang Email dan String adalah tipe berbeda meski representasinya sama. Zero-cost: tidak ada objek wrapper di memory.

Coba contoh kode

extension type Email(String _nilai) {
  bool get valid => _nilai.contains("@");
  String get teks => _nilai;
}

void main() {
  var email = Email("ari@kampus.com");
  print(email.valid);   // true
  print(email.teks);    // ari@kampus.com
}

Email punya identitas tipe sendiri; getter teks membuka representasi String saat dibutuhkan. Extension type diperiksa sebagai tipe terpisah oleh compiler tanpa objek pembungkus tambahan saat runtime.

Latihan singkat

Uji: extension type dengan getter panjang — email.panjang harus `17`.