TypeScript Enums
🧮 TypeScript Enums
They make code more readable, less error-prone, and easier to maintain.
1️⃣ Numeric Enums (Default)
By default, enum members start at 0 and increment by 1.
Values:
2️⃣ Numeric Enums with Custom Values
You can set the starting value (or all values).
Values:
3️⃣ String Enums (Most Recommended ⭐)
Each member is explicitly set to a string.
✅ Better readability
✅ Safer for APIs & debugging
4️⃣ Heterogeneous Enums (Avoid ❌)
Mixing string and number values is allowed but discouraged.
5️⃣ Using Enums in Conditions
6️⃣ Enum Reverse Mapping (Numeric Only)
Numeric enums support reverse lookup.
⚠️ Reverse mapping does not work with string enums.
7️⃣ const enum (Compile-Time Optimization)
Removed completely during compilation.
✅ Faster
❌ Cannot be accessed at runtime
8️⃣ Enum vs Union Types
Sometimes union types are a better alternative.
| Enums | Union Types |
|---|---|
| Runtime object | Compile-time only |
| Reverse mapping | No |
| Larger JS output | Smaller |
🔑 Enums Summary
| Enum Type | Use Case |
|---|---|
| Numeric | Simple internal values |
| String | APIs, logs, UI states |
| const enum | Performance critical |
| Heterogeneous | ❌ Avoid |
⭐ Best Practices
✔ Prefer string enums
✔ Use const enum for performance
✔ Avoid heterogeneous enums
✔ Consider union types for simple cases
