Hiểu "target" và "module" trong tsconfig


82

Dưới đây là tsconfig.jsontệp của tôi , nơi tôi đã đặt mục tiêu es5và mô-đun thànhes6

{
   "compilerOptions": {
   "target": "es5",    
   "module": "es6"
   }

}

Câu hỏi của tôi là bởi vì các mô-đun [nhập / xuất] là một phần của es6 và KHÔNG phải es5, mã javascript được chuyển đổi không được có các câu lệnh nhập / xuất. Nhưng mã javascript được tạo ra đang có các câu lệnh nhập / xuất mặc dù đích là es5, làm thế nào có thể?


Câu trả lời:


60

Hệ thống mô-đun độc lập với việc triển khai ngôn ngữ. Các mô-đun ES6 (ES2015) sử dụng cú pháp import/ exportvà tùy thuộc vào trình tải mô-đun để diễn giải điều đó.

Ở đây, bạn đã chỉ định bằng cách sử dụng hệ thống mô-đun ES2015, để kích hoạt cú pháp mô-đun ES6.

Bản thân JavaScript có thể nhắm mục tiêu ES5 và chỉ sử dụng các tính năng của ES5, nhưng về mặt lý thuyết, có thể sử dụng trình nạp mô-đun với mã đó hoạt động với cú pháp mô-đun ES2015. Mặc dù có thể, nhưng nó không nhất thiết phải là điều bạn muốn làm. Phổ biến hơn là sử dụng các mô-đun CommonJS hoặc AMD với ES5 JavaScript.

Rõ ràng sự kết hợp này thậm chí không được phép trước TypeScript 2.0. Trong ghi chú phát hành TypeScript 2.0, nó nói:

"Trước đây được gắn cờ là tổ hợp cờ không hợp lệ, target: es5 và 'module: es6' hiện được hỗ trợ. Điều này sẽ tạo điều kiện thuận lợi cho việc sử dụng bộ lắc cây dựa trên ES2015 như cuộn lên."


4
Có bất kỳ cờ nào trong số này xác định mã đã biên dịch được xuất ra bằng ngôn ngữ và hệ thống mô-đun nào không, hay những cờ này chỉ để xác định cách phân tích cú pháp nguồn đầu vào?
— Tom

1
"Hệ thống mô-đun độc lập với việc triển khai ngôn ngữ" - Bạn có biết tại sao lại như vậy không? Bất kỳ tài liệu có sẵn cho điều này?
— KaushikTD

18

Để bổ sung cho câu trả lời trước đó, vào năm 2020, có 4 tùy chọn cấu hình TS xác định độ phân giải mô-đun và đầu ra biên dịch:

  • module.
  • target.
  • lib.
  • moduleResolution.

3 đầu tiên ảnh hưởng đến đầu ra của bạn, trong khi thứ sau ảnh hưởng đến cách trình biên dịch tìm kiếm các mô-đun của bạn để giải quyết chúng và đóng gói.

Dưới đây là một bài viết hay và ngắn gọn về các tùy chọn này: Sự nhầm lẫn kiểu phân loại: mô-đun tsconfig.json, mô-đunResolution, target & lib đã giải thích | bởi Tom Medema | Trung bình .

Ngoài ra, một tài liệu về độ phân giải mô-đun: TypeScript: Sổ tay - Độ phân giải Mô-đun .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.