
Giới thiệu
TypeScript 5.5 mang đến những cải tiến đáng kể cho hệ thống kiểu dữ liệu, khiến mã nguồn an toàn hơn và dễ bảo trì hơn. Bài viết này đi sâu vào cải tiến type inference, decorators chuẩn hóa và isolated declarations — ba tính năng cốt lõi định hình trải nghiệm phát triển hiện đại. Để biết thêm chi tiết chính thức, bạn có thể tham khảo bản thông báo phát hành của Microsoft.

Cải tiến type inference: thông minh hơn, ít annotation hơn
TypeScript 5.5 mở rộng khả năng suy luận kiểu (type inference) trong nhiều ngữ cảnh phức tạp. Trước đây, các hàm generic lồng nhau hoặc callback phức tạp thường buộc lập trình viên phải khai báo kiểu tường minh. Phiên bản mới sử dụng thuật toán control flow analysis nâng cao để theo dõi luồng dữ liệu qua các nhánh điều kiện, vòng lặp và xử lý lỗi.
Ví dụ điển hình là suy luận kiểu cho Promise.all với mảng các promise khác kiểu:
const results = await Promise.all([
fetchUser(1),
fetchPosts(2),
fetchSettings()
]);
// TypeScript 5.5 suy luận chính xác: [User, Post[], Settings]
Cải tiến này giảm thiểu boilerplate kiểu dữ liệu lên đến 30% trong các codebase sử dụng nhiều async/await và generic phức tạp.
Decorators chuẩn hóa (Stage 3): dùng ngay trong production
Decorators đã trải qua nhiều giai đoạn proposal (Stage 1 → 2 → 3) và TypeScript 5.5 triển khai đầy đủ theo tiêu chuẩn ECMAScript Stage 3. Cú pháp mới sử dụng @decorator thay vì @decorator() cũ, và hỗ trợ decorator metadata để truy xuất thông tin lúc chạy.
So sánh nhanh:
| Đặc điểm | Cũ (Experimental) | Mới (Stage 3) |
|---|---|---|
| Cú pháp | @Log() |
@Log |
| Metadata | Không có | Symbol.metadata |
| Hỗ trợ class fields | Hạn chế | Đầy đủ |
| Tương thích Babel/Swc | Cần plugin riêng | Built-in |
Ví dụ thực tế với validation decorator:
function Validate(min: number, max: number) {
return function(target: Object, context: ClassFieldDecoratorContext) {
return function(this: any, value: number) {
if (value max) {
throw new Error(`${context.name} phải trong khoảng ${min}-${max}`);
}
return value;
};
};
}
class Product {
@Validate(0, 10000)
price: number = 0;
}

Isolated declarations: build nhanh hơn, d.ts chính xác hơn
isolatedDeclarations là cờ compiler mới yêu cầu mỗi file khai báo kiểu đầy đủ trong chính file đó, không phụ thuộc vào suy luận chéo giữa các file. Khi bật cờ này, TypeScript sinh file .d.ts nhanh hơn đáng kể vì không cần phân tích toàn bộ project graph.
Lợi ích chính:
- Tăng tốc build: Giảm 40-60% thời gian emit declaration trong monorepo lớn
- Parallelization: Cho phép build song song thực sự (mỗi file độc lập)
- Cache hiệu quả: Thay đổi file A không invalidate cache file B
- Publish package sạch: File .d.ts không chứa reference nội bộ rối rắm
Cách bật trong tsconfig.json:
{
"compilerOptions": {
"isolatedDeclarations": true,
"declaration": true,
"declarationMap": true
}
}
Lưu ý: Bật cờ này có thể báo lỗi ở chỗ code trước đây phụ thuộc vào cross-file inference — đây là tín hiệu tốt để refactor toward explicit types.
Bảng tóm tắt thay đổi chính
| Tính năng | Tác động | Khuyến nghị |
|---|---|---|
| Type inference mở rộng | Giảm annotation thủ công | Bật ngay, refactor dần |
| Decorators Stage 3 | Chuẩn hóa, metadata runtime | Dùng cho project mới, migrate dần project cũ |
| Isolated declarations | Build nhanh, cache tốt | Bật cho library/package, cân nhắc cho app |
| Regex syntax checking | Bắt lỗi regex lúc compile | Bật --checkRegexSyntax |
| Import attributes | Hỗ trợ with { type: 'json' } |
Dùng khi cần import JSON/WASM/CSS |
Hướng dẫn nâng cấp an toàn
- Chạy
npx [email protected] --dry-runtrên codebase hiện tại để xem lỗi tiềm ẩn - Bật
"isolatedDeclarations": truetrong tsconfig của package/library trước - Migrate decorators: tìm
@Decorator()→@Decorator, thêmcontextparam - Chạy test suite, kiểm tra type coverage bằng
type-coverage - Cập nhật CI/CD để dùng Node 20+ (yêu cầu của TS 5.5)
Kết luận
TypeScript 5.5 không chỉ là bản cập nhật nhỏ — nó đánh dấu sự trưởng thành của decorators và đưa type inference lên tầm cao mới. Ba tính năng cốt lõi (inference, decorators, isolated declarations) cùng giải quyết bài toán lớn nhất của dự án quy mô lớn: velosity vs correctness. Nâng cấp ngay hôm nay để tận hưởng build nhanh hơn, code an toàn hơn và trải nghiệm phát triển mượt mà hơn.
Lý do nên nâng cấp ngay
- Tiết kiệm thời gian build: Giảm 40-60% thời gian emit trong monorepo lớn nhờ isolated declarations
- Giảm lỗi kiểu dữ liệu: Type inference thông minh phát hiện lỗi sớm hơn, ít cần khai báo tường minh hơn
- Chuẩn hoá tương lai: Decorators Stage 3 tương thích với TC39 chuẩn, giảm nguy cơ kỹ thuật khi chuyển đổi
- Cải thiện trải nghiệm phát triển: Editor hỗ trợ tốt hơn với kiểm tra kiểu nhanh và tái cấu trúc chính xác hơn
Lưu ý bổ sung: Khi làm việc với type inference phức tạp, hãy sử dụng // @ts-expect-error chỉ khi thực sự cần thiết và luôn có thể giải thích tại sao. Kết hợp với strict: true trong tsconfig để có trải nghiệm type checking toàn diện nhất.
Nguồn tham khảo: TypeScript 5.5 Release Notes | TC39 Decorators Proposal
