Enums
The Bundle Size Explosion
// constants.ts - Our old enum-heavy code
enum UserRole {
Admin = 'ADMIN',
Moderator = 'MODERATOR',
User = 'USER',
Guest = 'GUEST'
}
enum ProductCategory {
Electronics = 'ELECTRONICS',
Clothing = 'CLOTHING',
Books = 'BOOKS',
Home = 'HOME',
Sports = 'SPORTS'
// ... 47 more categories
}
enum EventType {
Click = 'CLICK',
Hover = 'HOVER',
Scroll = 'SCROLL',
// ... 23 more event types
}
// ... 15 more large enumsNumeric Enums
Basic Numeric Enum
Custom Starting Value
Mixed Auto-Increment
String Enums
Basic String Enum
Why String Enums?
Const Enums
Regular Enum (Runtime Code)
Const Enum (No Runtime Code)
Real-World Example
Enum Member Types
Literal Type Narrowing
Computed and Constant Members
Constant Members
Reverse Mappings
Numeric Enum Reverse Mapping
String Enums Don't Have Reverse Mappings
Enums at Runtime
Regular Enum Compiled Output
Const Enum Compiled Output
When to Use Enums
Good Use Cases
When NOT to Use Enums
Use Union Types Instead
Use Constants for Single Values
Enum Alternatives
Union Types
as const Objects
Branded Types
Real-World Patterns
1. HTTP Status Codes
2. Feature Flags
3. Event Types
Common Mistakes I Made
1. Using Enums for Configuration
2. Not Using Const Enums
3. Using Enums When Union Types Suffice
Your Challenge
Key Takeaways
What I Learned
Last updated