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`.