Materi
Tipe union menyatakan bahwa sebuah nilai boleh berupa salah satu dari beberapa tipe, ditulis dengan tanda garis tegak di antaranya. Union juga bisa dibentuk dari nilai tertentu, bukan hanya dari tipe: teks "dikirim" sendiri bisa menjadi sebuah tipe, yang disebut literal type.
type Id = number | string;
type Status = "baru" | "dikirim" | "selesai";
let nomor: Id = 42;
nomor = "INV-2026-0001";
const status: Status = "dikirim";Union dari nilai tertentu membuat kompiler menolak teks lain, misalnya "batal", dengan pesan Type '"batal"' is not assignable to type 'Status'. Salah ketik tertangkap sebelum kode dijalankan, dan editor bisa menawarkan ketiga pilihan yang sah. Pada nilai bertipe union, hanya operasi yang tersedia di semua anggotanya yang boleh langsung dipakai.
TypeScript juga punya enum, yang menghasilkan objek sungguhan saat program berjalan — satu dari sedikit fitur TypeScript yang bukan sekadar lapisan tipe. Union literal tidak menyisakan kode apa pun setelah anotasi dihapus, dan nilainya tetap berupa teks biasa yang mudah dicocokkan dengan data dari luar program.
enum Gudang {
Bandung = "BDG",
Surabaya = "SBY",
} // tetap ada saat program berjalan
type KodeGudang = "BDG" | "SBY"; // hilang setelah anotasi dihapus