Nếu từng ngồi chờ hàng phút để tsc kiểm tra kiểu cho một monorepo lớn, bạn sẽ hiểu vì sao cộng đồng JavaScript háo hức với TypeScript 7.0 đến vậy. Ngày 8/7/2026, Microsoft chính thức công bố TypeScript 7.0 – phiên bản đầu tiên mà toàn bộ trình biên dịch và công cụ ngôn ngữ được port sang Go, chạy dưới dạng mã native thay vì JavaScript trên Node.js. Sau vài tuần cộng đồng thử nghiệm thực tế, bức tranh về lợi ích lẫn những điểm cần lưu ý khi nâng cấp đã khá rõ ràng.

Chuyện gì đã xảy ra?

Dự án port TypeScript sang Go (thường được biết đến với tên tsgo hay "Project Corsa") được Microsoft công bố từ năm 2025. Sau giai đoạn preview với gói @typescript/native-preview, phiên bản 7.0 chính thức đưa trình biên dịch mới về lại gói typescript quen thuộc. Cách cài đặt không đổi: npm install -D typescript rồi chạy npx tsc.

Điểm quan trọng: TypeScript 7.0 vẫn kiểm tra kiểu đầy đủ. Khác với esbuild, swc hay Biome vốn chỉ bóc tách kiểu để transpile nhanh, đây là cùng một bộ kiểm tra kiểu, chỉ được viết lại bằng ngôn ngữ biên dịch và tận dụng đa luồng.

Những con số đáng chú ý

Theo nhóm TypeScript, các bản build đầy đủ thường nhanh hơn từ 8 đến 12 lần. Một vài ví dụ được công bố và InfoQ tổng hợp:

  • Mã nguồn VS Code: thời gian build giảm từ khoảng 125,7 giây xuống 10,6 giây, nhanh hơn khoảng 11,9 lần, bộ nhớ dùng giảm khoảng 18%.
  • Mở một file có lỗi trong codebase VS Code: từ khoảng 17,5 giây xuống dưới 1,3 giây.
  • Slack chia sẻ thời gian kiểm tra kiểu trên CI giảm từ khoảng 7,5 phút xuống 1,25 phút.

Trình biên dịch mới cho phép điều chỉnh mức song song qua các cờ --checkers (mặc định 4), --builders, hoặc tắt đa luồng bằng --singleThreaded khi chạy trên máy CI cấu hình thấp.

Thay đổi phá vỡ tương thích cần biết

TypeScript 7.0 không chỉ là "bản cũ chạy nhanh hơn". Những tùy chọn đã bị đánh dấu deprecated ở 6.0 nay trở thành lỗi cứng. Một số thay đổi quan trọng:

  • strict được bật mặc định; module mặc định là esnext.
  • types mặc định là mảng rỗng, nên các gói @types sẽ không còn được tự động đưa vào nếu bạn không khai báo.
  • target: es5, downlevelIteration, các kiểu module như AMD, UMD, SystemJS và chế độ phân giải module node10, classic bị loại bỏ.
  • baseUrl không còn được hỗ trợ; dự án dùng path alias dựa trên baseUrl cần chuyển sang paths tương đối.

Nhóm phát triển khuyến nghị nâng cấp lên TypeScript 6.0 trước, xử lý hết các cảnh báo deprecated, rồi mới chuyển sang 7.0.

Điểm còn thiếu: API lập trình

Đây là hạn chế lớn nhất ở thời điểm hiện tại. TypeScript 7.0 chưa có API lập trình ổn định; nhóm phát triển dự kiến một API mới, khác với API cũ, sẽ đến ở bản 7.1. Hệ quả là các công cụ dựa vào API của trình biên dịch như typescript-eslint, plugin cho Vue, Svelte, Astro, MDX hay một số loader của webpack chưa thể dùng trình biên dịch mới.

Giải pháp tạm thời là gói tương thích @typescript/typescript6, cung cấp lệnh tsc6 và API của bản 6.0 để chạy song song. Chẳng hạn, nhóm Angular có thể dùng 7.0 cho bước kiểm tra trong CLI, còn trình soạn thảo vẫn chạy 6.0.

Vì sao điều này quan trọng?

Với doanh nghiệp phần mềm, thời gian build và kiểm tra kiểu là chi phí ẩn nhưng rất thật: phút CI, thời gian chờ review, và độ trễ phản hồi trong editor. Giảm một bậc độ lớn thời gian này đồng nghĩa với vòng lặp phát triển nhanh hơn, chi phí hạ tầng CI thấp hơn và trải nghiệm lập trình dễ chịu hơn ở các codebase lớn. Đây cũng là tín hiệu cho xu hướng "viết lại công cụ JavaScript bằng ngôn ngữ native" vốn đã thấy ở esbuild, Rspack, Biome hay Oxc.

Nên làm gì tiếp theo?

  1. Nâng cấp dự án lên TypeScript 6.0 và xử lý toàn bộ cảnh báo deprecated.
  2. Rà soát tsconfig.json: khai báo rõ types, thay baseUrl, kiểm tra target và module.
  3. Thử chạy TypeScript 7.0 trên CI ở một nhánh riêng để đo thời gian và phát hiện lỗi mới do strict mặc định.
  4. Nếu dùng typescript-eslint hoặc framework có ngôn ngữ nhúng, giữ tsc6 song song cho tới khi 7.1 có API.
  5. Theo dõi lịch phát hành: nhóm TypeScript cho biết sẽ ra bản tính năng mới khoảng 3–4 tháng một lần.

Kết luận

TypeScript 7.0 là một trong những thay đổi hạ tầng lớn nhất của hệ sinh thái JavaScript trong nhiều năm. Tốc độ là lợi ích rõ ràng, nhưng việc chưa có API lập trình và loạt thay đổi mặc định khiến quá trình chuyển đổi cần có kế hoạch. Cách tiếp cận an toàn là đi qua 6.0, chạy 7.0 song song trên CI, rồi chuyển hẳn khi các công cụ trong dự án đã sẵn sàng.

Nguồn tham khảo