En enum definierar en uppsättning namngivna konstanter. TypeScript har numeriska enums och string enums.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
En enum definierar en uppsättning namngivna konstanter. TypeScript har numeriska enums och string enums.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
Till skillnad från de flesta TypeScript-typer (som försvinner vid kompilering) emitterar en vanlig enum ett JavaScript-objekt till din bundle. Det är därför många team föredrar en union av string-literaler tillsammans med as const, som är rent på typ-nivå:
// 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 ger meningsfulla namn till fasta uppsättningar (states, roles, directions) och grupperar dem under ett namespace.
Men eftersom de emitterar runtime-kod och har quirks (numeriska enums är löst kontrollerade), favoriserar moderna TypeScript ofta string-literal unions för enkla fall — de är lättare och serialiseras naturligt.
Använd enums när du vill ha namnrymden eller reverse mapping.