enum mendefinisikan sekumpulan konstanta bernama. TypeScript memiliki enums numerik dan string.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
enum mendefinisikan sekumpulan konstanta bernama. TypeScript memiliki enums numerik dan string.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
Tidak seperti sebagian besar tipe TypeScript (yang menghilang saat kompilasi), enum biasa memancarkan objek JavaScript ke bundle Anda. Itulah mengapa banyak tim lebih suka union string literals ditambah as const, yang murni pada tingkat tipe:
// often preferred — zero runtime cost, easy to read in logs
const Status = { Active: "ACTIVE", Inactive: "INACTIVE" } as const;
type Status = typeof Status[keyof typeof Status]; // "ACTIVE" | "INACTIVE"
// or simply:
type Direction = "up" | "down" | "left" | "right";
const enum E { A, B } // inlined at compile time — no runtime object, but has tooling caveats
Enums memberikan nama bermakna ke set tetap (state, roles, directions) dan mengelompokkannya di bawah satu namespace.
Tetapi karena mereka memancarkan kode runtime dan memiliki quirks (numeric enums dicentang secara longgar), TypeScript modern sering lebih menyukai string-literal unions untuk kasus sederhana — mereka lebih ringan dan berseri secara alami.
Gunakan enums saat Anda ingin namespacing atau reverse mapping.