Module augmentation cho phép thêm types vào module đã có.
- Dùng để extend third-party types mà không fork.
- Cần import module đó (ambient augmentation vs global augmentation).
- Rất hữu ích cho middleware patterns.
typescript
// Thêm user vào Express Request (pattern phổ biến với auth middleware)
// Request trong handler đến từ express-serve-static-core — augment 'express' thì req.user vẫn lỗi
declare module 'express-serve-static-core' {
interface Request {
user?: { id: string; role: string };
}
}
// Trong route:
app.get('/me', (req, res) => {
res.json(req.user); // TS biết type của user
});