6 điểm bởi dlwocks31 4 giờ trước | Chưa có bình luận nào. | Chia sẻ qua WhatsApp

Ra mắt TypeScript 7.0 Beta - TS nhanh hơn khoảng 10 lần nhờ port native sang Go

  • Triển khai native mới được port từ trình biên dịch TypeScript hiện có sang Go
  • Dù là “beta”, nhóm phát triển nhấn mạnh nó đã đủ ổn định để dùng thử ngay trong công việc hằng ngày và CI
  • Codebase mới không phải là viết lại hoàn toàn (rewrite) mà là port có hệ thống từ triển khai hiện tại
  • Logic kiểm tra kiểu về mặt cấu trúc giống với TypeScript 6.0
  • Hiệu năng đôi khi nhanh hơn khoảng 10 lần so với TypeScript 6.0
  • Dựa trên hiệu năng của mã native + song song hóa bằng bộ nhớ chia sẻ
  • Đã được sử dụng trên các codebase hàng triệu LOC cả trong và ngoài Microsoft
  • Đã thử nghiệm trước với Bloomberg, Canva, Figma, Google, Linear, Notion, Slack, Vercel và nhiều bên khác
  • Không chỉ CLI mà trải nghiệm trên trình soạn thảo cũng được cải thiện để nhẹ và nhanh hơn

Cách sử dụng

  • Hiện tại được cài dưới dạng gói riêng
    • npm install -D @typescript/native-preview@beta
  • Chạy tsgo thay cho tsc hiện tại
    • npx tsgo --version
  • Trong các bản ổn định sau này, nó sẽ lại được phát hành qua gói typescript và entrypoint tsc

Dùng song song với TypeScript 6.0

  • Bản 7.0 Beta được cung cấp dưới dạng @typescript/native-preview + tsgo
  • Có thể chạy tsctsgo song song để so sánh
  • Ở bản ổn định, TS7 sẽ dùng lại tên tsc
  • Cũng cung cấp gói @typescript/typescript6 để tương thích TS6
  • Các công cụ hiện có phụ thuộc vào TypeScript API hiện tại vẫn có thể tiếp tục dùng cấu hình dựa trên TS6 API trong thời gian trước mắt

Hạn chế quan trọng

  • 7.0 Beta đã khá gần mức production-ready nhưng vẫn chưa có programmatic API ổn định
  • API ổn định được đặt mục tiêu sớm nhất là sau TypeScript 7.1, tức sau vài tháng nữa
  • Các công cụ/plugin phụ thuộc trực tiếp vào TypeScript API cần cẩn trọng khi chuyển đổi

Song song hóa

  • Nhiều giai đoạn như parsing, kiểm tra kiểu, emit... đã được song song hóa
  • Thêm tùy chọn --checkers để điều chỉnh số worker kiểm tra kiểu
  • Thêm tùy chọn --builders để song song hóa build project reference
  • Thêm tùy chọn --singleThreaded để chạy đơn luồng
  • Hiệu quả đặc biệt rõ với codebase lớn và monorepo, nhưng tăng mức độ song song cũng có thể làm tăng mức dùng bộ nhớ

Tương thích theo chuẩn TypeScript 6.0

  • TypeScript 7.0 đặt mục tiêu tương thích với hành vi kiểm tra kiểu/CLI của TypeScript 6.0
  • Mục tiêu là mã biên dịch sạch trên TS6 cũng sẽ biên dịch y hệt trên TS7
  • Tuy vậy, các giá trị mặc định mới của TS6 và việc dọn dẹp các tính năng deprecated cũng được áp dụng cùng lúc
  • Thay đổi giá trị mặc định của strict, module, rootDir, types... có thể được cảm nhận rõ trong các dự án hiện có
  • Đặc biệt cần kiểm tra thay đổi ở rootDirtypes khi migration
  • Với các dự án đang dùng target/module cũ hoặc tùy chọn deprecated, nên chuyển sang TS6 trước rồi mới lên tiếp

Thay đổi ở JavaScript/JSDoc

  • Hỗ trợ JS được sắp xếp lại để nhất quán hơn với cách phân tích file TypeScript
  • Một số cú pháp kiểu JSDoc/Closure và phần xử lý đặc biệt cho các mẫu JS cũ đã bị loại bỏ
  • Các codebase dùng JS + JSDoc cần được kiểm tra riêng

Hỗ trợ trình soạn thảo

  • Có extension TypeScript Native Preview cho VS Code
  • Vì dùng cùng nền tảng với CLI nên trình soạn thảo cũng nhận được cải thiện hiệu năng tương tự
  • Hỗ trợ auto-import, hover, inlay hints, code lens, JSX linked editing...
  • Dựa trên LSP nên cũng dễ tận dụng trong các trình soạn thảo/công cụ hiện đại khác

Kế hoạch sắp tới

  • Sẽ có triển khai --watch hiệu quả hơn
  • Sẽ tiếp tục hoàn thiện parity cho declaration emit của file JS
  • Sẽ thu hẹp khoảng cách tính năng trong trình soạn thảo
  • Programmatic API ổn định sẽ có sau TypeScript 7.1
  • Bản ổn định của TypeScript 7.0 được đặt mục tiêu trong khoảng 2 tháng tới
  • Bản RC dự kiến công bố trước đó vài tuần

Chưa có bình luận nào.

Chưa có bình luận nào.