as const vs readonly
Both enforce immutability, but they work at different levels and confusing them can lead to subtle bugs.
🧠Context
Developers often ask: when should I use as const, and when should I use readonly? The answer depends on whether you’re working with values or types.
💡Intro
This post compares both features, shows their differences, and explains when to use each.
❓Why Use This?
- 
as const→ literal type + value immutability. - 
readonly→ type-level immutability. 
📝With vs Without Example
// as const
const roles = ["admin", "user"] as const;
type Role = typeof roles[number]; // "admin" | "user"
// readonly
type Roles = readonly string[];
const roles: Roles = ["admin", "user"];
// Cannot push new items
📌Real Life Use Cases
- 
as constfor config objects, button variants. - 
readonlyfor API response types, props contracts. 
Think of as const as a value lock, and readonly as a type contract.
              
    
Top comments (0)