Type Alias
Nama baru untuk tipe apa pun: union, tuple, fungsi, sampai object kompleks.
Memberi Nama pada Tipe
Type alias memakai kata kunci type untuk memberi nama pada tipe apa pun:
type ID = string | number;
type Koordinat = [number, number];
type Callback = (pesan: string) => void;
function cariPengguna(id: ID, selesai: Callback) {
// ...
}Tanpa alias, signature fungsi di atas jadi (id: string | number, selesai: (pesan: string) => void) yang susah dibaca dan rawan inkonsisten antar file.
Alias untuk Object Juga Bisa
type Produk = {
id: number;
nama: string;
harga: number;
};Fungsinya mirip interface untuk kasus sederhana. Bedanya muncul saat kamu butuh fitur lanjutan.
Interface vs Type Alias: Kapan Pakai Mana
| Kebutuhan | Pilihan |
|---|---|
Bentuk object yang akan di-extends | interface |
Bentuk object untuk implements class | interface |
| Union (`A | B`) |
| Tuple | type (interface tidak bisa) |
| Tipe fungsi | type |
Contoh yang hanya bisa dilakukan type alias:
type Status = "aktif" | "nonaktif" | "ditangguhkan"; // union literal
type Pasangan = [string, number]; // tuple
type Handler = (e: Event) => void; // tipe fungsiCatatan teknis: Interface mendukung declaration merging (dua interface bernama sama otomatis digabung), type alias tidak dan akan error duplikat. Merging berguna untuk menambah field ke tipe library pihak ketiga, tapi juga bisa jadi sumber kebingungan kalau tidak sengaja. Untuk kode sendiri, satu definisi per nama adalah kebiasaan yang sehat.