Ein enum definiert einen Satz benannter Konstanten. TypeScript hat numerische und string enum.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
Ein enum definiert einen Satz benannter Konstanten. TypeScript hat numerische und string enum.
{ , , , }
.;
[];
{
= ,
= ,
}
.;
Im Gegensatz zu den meisten TypeScript-Typen (die bei der Kompilierung verschwinden) gibt ein reguläres enum ein JavaScript-Objekt in dein Bundle aus. Deshalb bevorzugen viele Teams eine Union von String-Literalen plus as const, das rein auf Typ-Ebene ist:
// 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 geben festen Mengen (Zustände, Rollen, Richtungen) aussagekräftige Namen und gruppieren sie unter einem Namespace.
Aber weil sie Runtime-Code ausgeben und Besonderheiten haben (numerische Enums werden loose geprüft), bevorzugt modernes TypeScript oft String-Literal-Unions für einfache Fälle — sie sind leichter und serialisieren sich natürlich.
Verwende Enums, wenn du Namespacing oder Reverse Mapping möchtest.