An enum is a named set of constants, such as a set of account statuses. Unlike most TypeScript features, it exists at runtime. The compiler turns it into a real JavaScript object.
enum Status {
Active = "ACTIVE",
Disabled = "DISABLED",
}
function setStatus(s: Status) {}
setStatus(Status.Active); // OK
// setStatus("ACTIVE"); // Error: a string is not a Status
type StatusUnion = "ACTIVE" | "DISABLED";
function setStatusUnion(s: StatusUnion) {}
setStatusUnion("ACTIVE"); // OK, and no runtime object exists
Numeric enums count up from 0 and also map values back to names. String enums hold readable values, and they have no reverse mapping.
A union of string literals gives the same compile-time safety with no runtime code, and its values are plain strings. Use an enum when you need a runtime object to iterate over or look values up in.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓