Ra mắt bản xem trước TypeScript Native
(devblogs.microsoft.com)- Bản xem trước
tsgocủa dự án Corsa, dự án port trình biên dịch TypeScript sang native dựa trên Go, đã được phát hành qua npm - Đây là thông báo tiếp theo liên quan đến TypeScript nhanh hơn gấp 10 lần, từng gây chú ý vào tháng 3
- Đã đạt được mức cải thiện tốc độ hơn 10 lần so với
tschiện tại, đồng thời hỗ trợ cả JSX và các tệp JavaScript dựa trên JSDoc - Tiện ích Native Preview cho VS Code cũng đã được phát hành, nhưng các tính năng như tự động hoàn thành, tìm tham chiếu vẫn đang được phát triển
- API native mới và máy chủ ngôn ngữ dựa trên LSP cũng đang được chuẩn bị, cùng với việc đưa vào mô-đun Node nền tảng Rust là libsyncrpc
- Một số tính năng vẫn chưa được triển khai, và tồn tại khác biệt rõ ràng giữa TypeScript 7 (Corsa) và 5.8 hiện tại (Strada)
Tổng quan về TypeScript Native Preview
- Bản xem trước của dự án port TypeScript sang native (Corsa) được công bố vào tháng 3 năm 2025 nay đã được phát hành
- So với codebase hiện tại dựa trên JS (Strada),
tsgođược viết bằng Go cho thấy hiệu năng tăng hơn 10 lần trên các dự án lớn nhờ khả năng xử lý song song và tận dụng bộ nhớ dùng chung tsgodự kiến sẽ thay thếtsctrong tương lai, nhưng hiện tại được cung cấp dưới dạng gói npm riêngnpm install -D @typescript/native-preview npx tsgo --project ./src/tsconfig.json
Tính năng tiện ích mở rộng VS Code
-
Phát hành tiện ích “TypeScript (Native Preview)” cho VS Code
-
Sau khi cài đặt, cần kích hoạt thông qua Command Palette hoặc phần cài đặt
"typescript.experimental.useTsgo": true -
Hiện tại vẫn phụ thuộc vào tiện ích hiện có nên tính năng còn hạn chế, nhưng sẽ tiếp tục được cải thiện
Chu kỳ phát hành và lộ trình phát triển
- Bản xem trước này dự kiến sẽ tiếp tục phát triển thành phiên bản chính thức TypeScript 7
- Được phân phối dưới dạng bản dựng Nightly và tự động cập nhật
- Một số tính năng hiện chưa được hỗ trợ:
--build,--declaration, emit cho target cấp thấp hơn- Tính năng trình soạn thảo: tự động hoàn thành, tìm tham chiếu, đổi tên...
Các cập nhật chính
Mức độ hoàn thiện của kiểm tra kiểu được cải thiện
- Phần lớn các tính năng kiểm tra kiểu đã được port xong
- Bắt đầu hỗ trợ kiểm tra kiểu cho JSX và JavaScript + JSDoc
- Do một số thay đổi có chủ đích và khác biệt trong
lib.d.ts, lỗi có thể xuất hiện khác nhau
Hỗ trợ kiểm tra kiểu cho JSX
- Trước đây JSX chỉ mới phân tích cú pháp được, nhưng nay đã hỗ trợ kiểm tra kiểu đầy đủ
- Ví dụ: với dự án Sentry,
tscmất 72 giây còntsgomất 6,7 giây, tức nhanh hơn hơn 10 lầntsgo -p . --noEmit --extendedDiagnostics
Kiểm tra kiểu cho tệp JavaScript
- Tính năng phân tích tệp JS dựa trên JSDoc cũng đã được tái triển khai bằng mã native
- Được refactor theo cách hiện đại và nhất quán hơn so với trước đây
- Một số mẫu cũ có thể sẽ không còn được nhận diện nữa
Tính năng trình soạn thảo (dựa trên LSP)
- Đang được viết lại thành máy chủ ngôn ngữ dựa trên LSP thay cho TSServer hiện tại
- Ở phiên bản đầu, cung cấp các tính năng hiển thị lỗi, đi tới định nghĩa, hover
- Gần đây cũng đã bổ sung tính năng tự động hoàn thành (completion)
Tình hình phát triển API
- Đang triển khai lớp API dựa trên IPC
- Cho phép nhiều ngôn ngữ khác nhau giao tiếp với tiến trình TypeScript
- Để hỗ trợ giao tiếp đồng bộ trên Node.js, đã đưa vào mô-đun nền tảng Rust libsyncrpc
- Thiết kế API hiện vẫn ở giai đoạn đầu và đang tiếp nhận phản hồi
Điểm khác biệt so với TypeScript hiện tại
-
Do khác biệt về một số thiết lập, có thể phát sinh lỗi trong các dự án hiện có:
- Ví dụ:
--moduleResolution: node→ khuyến nghị dùngbundlerhoặcnodenext{ "compilerOptions": { "module": "preserve", "moduleResolution": "bundler" } }
- Ví dụ:
-
Các khác biệt khác:
- JSX emit chỉ có thể giữ nguyên
- Chưa hỗ trợ declaration emit
- Chưa hỗ trợ
--build - Dịch vụ ngôn ngữ liên quan đến project reference vẫn chưa hoàn thiện
Kế hoạch sắp tới
- Mục tiêu là hoàn thiện
--buildvà phần lớn các tính năng cốt lõi của trình soạn thảo trước cuối năm nay - Tiến độ phát triển sẽ tiếp tục được cập nhật qua blog và các bản phát hành nightly
3 bình luận
Tôi đang tự build trực tiếp LSP để dùng. Đổi sang Go nên cảm nhận rất rõ là tài nguyên tiêu thụ đã giảm đi.
Dạo này cứ chuyển js sang rust / go là thành trào lưu để tăng hiệu năng
Khi refactor, khá nhiều lần việc phân tích mã ở phía
tsserverbị chậm khiến cả editor bị treo cứng, nên mong là nó sẽ sớm ra mắt để được giải thoát khỏi nỗi khổ này.