| Deklarasi ganda | Bisa dideklarasikan lebih dari sekali — otomatis digabung (declaration merging). | Tidak bisa — deklarasi dengan nama sama akan error. |
| Extend / gabung tipe | Menggunakan extends. | Menggunakan intersection &. |
| Union type | Tidak bisa merepresentasikan union. | Bisa, contoh: type Status = "active" | "inactive". |
| Tipe primitif/tuple/alias lain | Hanya untuk bentuk object/class. | Bisa untuk apa saja — primitif, tuple, union, mapped type, dll. |
| Konvensi umum | Sering dipakai untuk mendeskripsikan bentuk object publik/API, terutama pada class. | Sering dipakai untuk union, intersection, atau tipe yang butuh transformasi (mapped/conditional types). |