TypeScript 7 ra mắt với “isolated declarations,” một chế độ trình biên dịch cho phép các monorepo lớn biên dịch các tệp song song và tăng tốc vòng lặp phản hồi cho nhà phát triển.

Tại sao isolated declarations lại quan trọng vào lúc này

Cho đến bản phát hành này, trình biên dịch TypeScript xử lý các tệp khai báo (.d.ts) trên một luồng duy nhất. Trong các codebase trải dài hàng trăm gói (packages), bước đó thường làm nghẽn toàn bộ quy trình build. Bằng cách phân chia công việc kiểm tra kiểu (type-checking) qua các nhân CPU, isolated declarations giúp cắt giảm đáng kể thời gian build cho các nhóm duy trì tất cả thư viện trong một kho lưu trữ duy nhất.

Tác động này sẽ đến ngay lập tức với bất kỳ tổ chức nào chạy các tác vụ CI hoặc cần rebuild cục bộ nhanh chóng.

Con đường dẫn đến kiểm tra kiểu song song

Microsoft đã thêm tính năng biên dịch lũy tiến (incremental compilation) từ nhiều năm trước, nhưng giai đoạn khai báo vẫn diễn ra tuần tự vì các tệp phụ thuộc lẫn nhau. Khi các monorepo lớn dần, quá trình xử lý đơn luồng này đã trở thành một nút thắt cổ chai tốn kém. Isolated declarations phá vỡ chuỗi phụ thuộc, coi bề mặt công khai (public surface) của mỗi tệp là một đơn vị độc lập và xác thực chúng đồng thời.

Ai được lợi, ai có thể không

  • Các nhóm phát triển với monorepo lớn – Thấy được sự cắt giảm thời gian build lớn nhất, đặc biệt là trên các CI agent có nhiều nhân CPU.
  • Các dự án nhỏ hoặc ứng dụng đơn gói (single-package) – Có thể chỉ nhận thấy sự cải thiện nhẹ vì bước khai báo vốn đã chiếm một phần rất nhỏ trong tổng thời gian biên dịch.
  • Các nhóm sử dụng phần cứng hạn chế – Cũng có sự cải thiện không đáng kể vì cùng lý do trên.

Các cập nhật rộng hơn của TypeScript 7

Isolated declarations đi kèm với một loạt các nâng cấp tập trung vào tính an toàn:

  • Tinh chỉnh chế độ nghiêm ngặt (Strict mode) – Các kiểm tra mới như strictIndexSignatures sẽ cảnh báo khi mã truy cập vào một khóa đối tượng có khả năng bị thiếu.
  • Các phần tử tuple có tên (Named tuple elements) – Các nhà phát triển có thể gắn nhãn cho các vị trí trong tuple, giúp các chữ ký API (API signatures) có khả năng tự giải thích (self-documenting).
  • Toán tử satisfies được cải tiến – Việc xử lý tốt hơn các generic phức tạp giúp cải thiện khả năng suy luận kiểu (type inference) mà không làm giảm khả năng đọc.
  • Lan truyền ngữ cảnh bất đồng bộ (Async context propagation) – Hỗ trợ AsyncContext API giúp ích cho việc truy vết các ngăn xếp gọi (call stacks) bất đồng bộ.
  • Metadata của Decorator – Đề xuất TC39 cho phép mã thực thi (runtime code) kiểm tra các decorator của lớp.
  • Chú thích biến thiên rõ ràng (Explicit variance annotations) – Sử dụng + hoặc - trên các tham số generic để báo hiệu tính hiệp biến (covariance) hoặc nghịch biến (contravariance), giúp tăng độ chính xác cho trình kiểm tra kiểu.

Những bổ sung này củng cố danh tiếng của TypeScript như một ngôn ngữ “ưu tiên kiểu dữ liệu” (type-first), nhưng isolated declarations là tính năng duy nhất trực tiếp giải quyết một vấn đề nan giải vốn tăng dần theo quy mô của codebase.

Điều cần theo dõi tiếp theo

Kết luận

Isolated declarations mang lại tốc độ build nhanh hơn cho các nhóm làm việc nhiều với monorepo. Đối với các tổ chức phải trả phí cho số phút chạy CI hoặc gặp khó khăn với việc rebuild cục bộ chậm chạp, việc nâng cấp lên TypeScript 7 là một bước đi ít rủi ro, mang lại hiệu quả tiết kiệm thời gian và chi phí có thể đo lường được. Các phần còn lại của bản phát hành bổ sung các lưới an toàn hữu ích, nhưng công cụ kiểm tra kiểu song song mới là tính năng nổi bật nhất, trực tiếp giải quyết thách thức về khả năng mở rộng trong phát triển JavaScript hiện đại.