Un enum definisce un insieme di costanti denominate. TypeScript ha enum numerici e string.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
Un enum definisce un insieme di costanti denominate. TypeScript ha enum numerici e string.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
A differenza della maggior parte dei tipi TypeScript (che scompaiono al momento della compilazione), un enum ordinario emette un oggetto JavaScript nel tuo bundle. Ecco perché molti team preferiscono un union di string literals più as const, che è puramente a livello di tipo:
// 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
Gli enum forniscono nomi significativi a insiemi fissi (stati, ruoli, direzioni) e li raggruppano in un unico namespace.
Ma poiché emettono codice runtime e hanno peculiarità (gli enum numerici vengono controllati debolmente), TypeScript moderno spesso favorisce le string-literal unions per i casi semplici — sono più leggeri e si serializzano naturalmente.
Utilizza gli enum quando vuoi il namespacing o il reverse mapping.