Bỏ qua đến nội dung chính
Về trang chủ
Tech tools-cli 6 phút đọc

TypeScript 7.0 RC: Trình Biên Dịch Go-Native "Hạ Cánh" – Tốc Độ Tăng Gấp 10 Lần! 🚀

Microsoft vừa công bố TypeScript 7.0 RC, với trình biên dịch được viết lại hoàn toàn bằng Go, mang lại hiệu năng kiểm tra kiểu và tải dự án nhanh hơn gấp 10 lần, đồng thời giảm một nửa lượng bộ nhớ sử dụng.

Tier 1 · nguồn 99% độ tin cậy Auto-priority
Nguồn gốc jatniel.dev

Thông báo TypeScript 7.0 RC: Trình Biên Dịch Go-Native "Hạ Cánh" 🎉

Ngày 18 tháng 6 năm 2026, đội ngũ TypeScript của Microsoft chính thức công bố phiên bản Release Candidate (RC) cho TypeScript 7.0. Đây là bước chuyển mình kiến trúc quan trọng nhất trong lịch sử ngôn ngữ này kể từ khi ra đời. Trình biên dịch TypeScript (tsc) và dịch vụ ngôn ngữ đã được chuyển đổi hoàn toàn từ TypeScript/JavaScript (tên mã Strada) sang Go (tên mã Project Corsa), mang lại những cải tiến hiệu năng vượt trội.

Hiệu Năng Đột Phá: Tăng Tốc Gấp 10 Lần! 🚀📈

Nhờ việc chuyển sang mã nhị phân Go-native và triển khai cơ chế song song hóa bộ nhớ chia sẻ, TypeScript 7.0 đạt được tốc độ kiểm tra kiểu và tải dự án nhanh hơn khoảng 10 lần trên các codebase quy mô lớn:

* VS Code (1.505.000 dòng mã): Thời gian biên dịch và kiểm tra kiểu giảm từ 77,8 giây (TS 6.0) xuống còn 7,5 giây (TS 7.0) – nhanh hơn 10,4 lần. * Playwright (356.000 dòng mã): Giảm từ 11,1 giây xuống còn 1,1 giâynhanh hơn 10,1 lần. * TypeORM (270.000 dòng mã): Giảm từ 17,5 giây xuống còn 1,3 giâynhanh hơn 13,5 lần. * Codebase của Sentry: Giảm từ 133,08 giây xuống còn 16,25 giâynhanh hơn 8,19 lần. * Thời gian tải dự án trong Editor: Tải dự án VS Code nhanh hơn 8 lần (giảm từ 9,6 giây xuống còn 1,2 giây). * Lượng bộ nhớ: Mức sử dụng bộ nhớ giảm khoảng một nửa trên toàn hệ thống. * Độ ổn định của Language Server: Dịch vụ ngôn ngữ native giảm hơn 20 lần số sự cố trong quá trình kiểm thử tải.

Vì Sao Go "Thắng Thế" Rust: Vòng Lặp Tham Chiếu & Khả Năng Song Song Hóa 🤔💡

Việc lựa chọn Go thay vì Rust cho lần chuyển đổi lớn này là một quyết định có chủ đích và thực dụng của Kiến trúc sư trưởng Anders Hejlsberg cùng đội ngũ kỹ sư TypeScript.

Các cấu trúc dữ liệu cốt lõi của trình biên dịch TypeScript (đặc biệt là Cây Cú pháp Trừu tượng - AST và Bảng Ký hiệu - Symbol Tables) phụ thuộc rất nhiều vào các tham chiếu tuần hoàn (chẳng hạn như các nút AST trỏ đến nút cha của chúng, hoặc các ký hiệu tham chiếu đến phạm vi bao quanh chúng).

* Rào cản của Rust: Mô hình sở hữu chặt chẽ tại thời điểm biên dịch của Rust khiến các cấu trúc dữ liệu tuần hoàn cực kỳ khó triển khai mà không sử dụng rộng rãi cơ chế đếm tham chiếu (Rc, Arc) và con trỏ thô. Điều này sẽ đòi hỏi phải thiết kế lại hoàn toàn các thuật toán của trình biên dịch, tiềm ẩn nguy cơ thay đổi hành vi tinh vi. * Lợi thế của Go: Trình thu gom rác (garbage collector) và mô hình đồng thời bộ nhớ chia sẻ của Go hỗ trợ native các tham chiếu tuần hoàn, cho phép chuyển đổi trực tiếp từng tệp một các thuật toán hiện có. Điều này giúp duy trì ngữ nghĩa kiểm tra kiểu giống hệt, đồng thời mang lại khả năng thực thi mã native và kiểm tra song song an toàn, đa luồng thông qua Goroutines.

Sống Chung Hòa Bình với TypeScript 6.0 🤝

Do API trình biên dịch programmatic ổn định được dời sang TypeScript 7.1 (dự kiến phát hành trong vài tháng tới), các hệ sinh thái như typescript-eslint hoặc ts-morph vẫn yêu cầu TypeScript 6.0. Microsoft khuyến nghị chạy TypeScript 6.0 và 7.0 song song bằng cách sử dụng các alias của npm:

json { "devDependencies": { "typescript": "npm:@typescript/typescript6@^6.0.0", "typescript-7": "npm:typescript@rc" } }

Với thiết lập này, các kiểm tra phụ thuộc ngang hàng (peer dependency checks) vẫn được đáp ứng cho các công cụ cũ, trong khi các nhà phát triển có thể chạy npx tsc (hoặc tsc trong các script build) bằng trình biên dịch Go-native hoàn toàn mới.

Cấu Hình & Các Cờ Song Song Hóa CLI Mới ⚙️

TypeScript 7.0 giới thiệu ba cờ CLI mới để cấu hình mô hình thực thi song song đa luồng của nó:

* --checkers N (Mặc định: 4): Chỉ định số luồng worker đồng thời chạy các tác vụ kiểm tra kiểu. Các máy trạm phát triển có nhiều lõi có thể tăng giá trị này để biên dịch nhanh hơn, trong khi các pipeline CI/CD có thể giới hạn nó để kiểm soát bộ nhớ. * --builders N (Mặc định: 16): Kiểm soát số lượng tham chiếu dự án monorepo biên dịch song song. Lưu ý rằng điều này có tác động nhân lên đối với số luồng (ví dụ: --checkers 4 --builders 4 tạo ra tối đa 16 tiến trình đồng thời). * --singleThreaded: Buộc thực thi đơn luồng, lý tưởng cho các môi trường gỡ lỗi bị hạn chế tài nguyên hoặc yêu cầu tính xác định.

Chế Độ Watch Đã Được Xây Dựng Lại

Chế độ --watch đã được xây dựng lại hoàn toàn trên phiên bản Go của bộ theo dõi tệp của Parcel (@parcel/watcher), thay thế hệ thống thăm dò thư mục tốn CPU trước đây. Điều này mang lại khả năng tiết kiệm CPU và năng lượng đáng kể trên các codebase lớn với các thư mục node_modules khổng lồ.

Kiểm Toán `tsconfig` Quan Trọng và Các Thay Đổi Gây Lỗi ⚠️

TypeScript 7.0 thực thi các cài đặt mặc định nghiêm ngặt được giới thiệu trong TS 6.0 và biến các tùy chọn đã lỗi thời thành lỗi build cứng:

* rootDir mặc định là ./: Nếu tsconfig.json của bạn nằm ở thư mục gốc nhưng mã nguồn của bạn nằm trong /src, bạn phải cấu hình rõ ràng `