Uma enum define um conjunto de constantes nomeadas. TypeScript possui enums numéricos e de string.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
Uma enum define um conjunto de constantes nomeadas. TypeScript possui enums numéricos e de string.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
Ao contrário da maioria dos tipos TypeScript (que desaparecem no momento da compilação), uma enum regular emite um objeto JavaScript no seu bundle. É por isso que muitos times preferem uma união de literais de string mais as const, que é puramente em nível de 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
Enums fornecem nomes significativos para conjuntos fixos (estados, funções, direções) e os agrupam em um único namespace.
Mas como emitem código em tempo de execução e têm peculiaridades (enums numéricos são verificados de forma solta), o TypeScript moderno geralmente favorece uniões de literais de string para casos simples — são mais leves e serializam naturalmente.
Use enums quando você quer namespacing ou mapeamento reverso.