Sebuah enum mentakrifkan satu set pemalar bernama. TypeScript mempunyai enum berangka dan enum string.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
Sebuah enum mentakrifkan satu set pemalar bernama. TypeScript mempunyai enum berangka dan enum string.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
Tidak seperti kebanyakan jenis TypeScript (yang lenyap pada masa kompil), enum biasa memancarkan objek JavaScript ke dalam bundle anda. Itulah sebabnya banyak pasukan lebih suka union literal string ditambah as const, yang bersifat peringkat-jenis semata-mata:
// 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 kepada set tetap (keadaan, peranan, arah) dan mengumpulkannya di bawah satu namespace.
Tetapi kerana ia memancarkan kod runtime dan mempunyai keanehan (enum berangka diperiksa secara longgar), TypeScript moden sering mengutamakan union literal string untuk kes mudah — ia lebih ringan dan bersiri secara semula jadi.
Gunakan enums apabila anda mahukan namespacing atau pemetaan terbalik (reverse mapping).