Node.js bổ sung hỗ trợ thử nghiệm cho TypeScript
(github.com/nodejs)Mô-đun: thêm --experimental-strip-types
-
Có thể chạy tệp TypeScript trong Node.js
- Khi đặt cờ
--experimental-strip-types, có thể chạy các tệp TypeScript - Node.js chuyển đổi mã nguồn TypeScript thành mã nguồn JavaScript
- Trong quá trình chuyển đổi sẽ không thực hiện kiểm tra kiểu, và các kiểu sẽ bị loại bỏ
- Khi đặt cờ
-
Động cơ
- Điều quan trọng là cho phép chạy tệp TypeScript mà không cần phụ thuộc hoặc loader bên ngoài
- Mục tiêu là để người dùng có thể chạy
node foo.ts
-
Ý nghĩa của việc loại bỏ kiểu
- Loại bỏ kiểu là xóa toàn bộ kiểu và chuyển đầu vào thành mô-đun JavaScript
- Ví dụ:
const foo: string = "foo";được chuyển thànhconst foo = "foo";
-
Lý do chọn @swc/wasm-typescript
- Vì sự đơn giản
- Các công cụ khác cần thêm Rust hoặc Go, trong khi @swc/wasm-typescript là một gói nhỏ chỉ cần các tệp wasm và js
- Công cụ này cũng được dùng trong Deno nên có thể tin cậy
-
Hạn chế
- Các tính năng chỉ có trong TypeScript như enum, namespace... sẽ không được chuyển đổi
- Không hỗ trợ import không có phần mở rộng
-
Kế hoạch trong tương lai
- Có khả năng sẽ được triển khai ở lớp native
- Có thể bổ sung hỗ trợ source map
Tóm tắt của GN⁺
- Giải thích về tính năng mới cho phép chạy tệp TypeScript trong Node.js
- Có thể thực thi bằng cách chuyển tệp TypeScript sang JavaScript, nhưng không thực hiện kiểm tra kiểu
- Điều này giúp người dùng chạy tệp TypeScript mà không cần phụ thuộc bên ngoài, từ đó đơn giản hóa môi trường phát triển
- Tính năng này được triển khai bằng @swc/wasm-typescript và cũng đang được cân nhắc triển khai ở lớp native trong tương lai
- Có thể hữu ích cho các dự án sử dụng kết hợp TypeScript và JavaScript.
1 bình luận
Ý kiến Hacker News
Việc loại bỏ kiểu của TypeScript là bất khả thi nếu không có cú pháp của TypeScript. Loại bỏ kiểu không phải là công việc ở cấp độ token, và cú pháp TypeScript vẫn đang tiếp tục thay đổi
foo < bar & baz > ( x )đã từng được diễn giải khác trong TypeScript 1.5Nếu Node.js có thể chạy trực tiếp các tệp TypeScript, thì trình biên dịch TypeScript sẽ không cần phải loại bỏ kiểu và chuyển đổi sang JavaScript
Nếu tính năng này trở thành mặc định, tôi tò mò hệ sinh thái NPM sẽ phản ứng thế nào
engine: nodejs >= 25vào package.json rồi bỏ qua bước buildSẽ là lợi ích rất lớn nếu Node có thể xem xét kiểu trong JS
Trải nghiệm lập trình viên (DX) của Bun trong lĩnh vực này là chưa từng có tiền lệ và đáp ứng hầu hết các trường hợp sử dụng
Tôi rất thích TypeScript và đã luôn khao khát có một TypeScript runtime
Tính năng deno tôi thích nhất đang được đưa trực tiếp vào Node
Đây là một tháng rất quan trọng với Node
Tôi là tác giả của PR, AMA
Từ lâu tôi đã bắt đầu dùng Node.js cho công việc backend, và nó mang lại nhiều lợi ích hơn PHP