Enum määrittää joukon nimettyjä vakioita. TypeScriptissä on numeeriset ja string enum.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
Enum määrittää joukon nimettyjä vakioita. TypeScriptissä on numeeriset ja string enum.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
Toisin kuin useimmat TypeScript-tyypit (jotka häviävät käännösaikana), tavallinen enum lähettää JavaScript-objektin bundle-tiedostoosi. Tämän vuoksi monet tiimit suosivat string-literaalien unionia plus as const, joka on puhtaasti tyyppitasolla:
// 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
Enum antavat merkityksellisiä nimiä kiinteille joukoille (tilat, roolit, suunnat) ja ryhmittelevät ne yhden namespace-kautta.
Mutta koska ne luovat runtime-koodia ja niillä on omituisuuksia (numeeriset enum tarkistetaan löyhästi), moderni TypeScript usein suosii string-literal unioneja yksinkertaisissa tapauksissa — ne ovat keveämpiä ja serialisoituvat luonnollisesti.
Käytä enum, kun haluat namespace- tai reverse mapping -toiminnallisuutta.