Mục tiêu trong tsconfig.json để làm gì?


93

Điều gì targettrong tsconfig.jsonbiểu thị?

{
  "compilerOptions": 
  {
    "sourceMap": true,
    "target": "es5",
    "module": "commonjs",
    "jsx": "react",
    "moduleResolution": "classic",
    "lib": [ "es2015", "dom",  "es2017" ]
  }
}

Câu trả lời:


108

Tôi còn khá mới đối với Typescript. Target trong tsconfig.json biểu thị điều gì?

targetcho biết đích JavaScript nào sẽ được phát ra từ TypeScript đã cho . Ví dụ:

target:es5

()=>nullsẽ trở thành function(){return null}ES5 không có chức năng mũi tên.

target:es6

()=>nullsẽ trở thành ()=>nullES6 có các chức năng mũi tên.


5
Tôi vẫn cần babel nếu tôi nhắm mục tiêu es5 cũng như mã typecript của tôi chứa async và await, liệu điều đó có biên dịch nếu tôi cung cấp target là es5 không?
Ankit Raonka

4
Không cần babel cho điều đó 🌹
basarat

Tôi đang sử dụng es5nhưng nó giải thích cấu trúc hủy [...arr].maparr.slice().map, phá vỡ đối với đối tượng giống mảng không có slice. Khi tôi nhắm mục tiêu es6, nó bắt đầu hoạt động trong trình duyệt của tôi, nhưng liệu nó có hoạt động với mọi người không?
Qwerty

@Qwerty Không, nó sẽ không. Ví dụ: nó sẽ không hoạt động trong Internet Explorer 11, vì nó không hỗ trợ es6 và không có chức năng .map. Ngay cả khi bạn nhắm mục tiêu es5, nó VẪN sẽ không hoạt động trong Internet Explorer, bởi vì công việc của trình vận chuyển không phải là thêm polyfills. Bạn vẫn cần thêm polyfill nếu muốn hỗ trợ các trình duyệt không phải es6.
pabrams

@pabrams vậy IE11 thậm chí không hỗ trợ tất cả ES5?
Qwerty

10

Target thay đổi phiên bản JavaScript mà bạn đang biên dịch.

Các tùy chọn có sẵn tại https://www.typescriptlang.org/docs/handbook/compiler-options.html

Với tinh thần cố gắng hiểu rõ hơn cách cờ mục tiêu thay đổi mã của tôi, tôi đã biên soạn một số mã thử nghiệm cho từng phiên bản khác nhau để hiểu rõ hơn về sự khác biệt.

https://github.com/aizatto/typescript-playground/tree/master/dist/test-async-main

Tôi cũng đang ghi chú về những gì tôi nên nhắm mục tiêu tùy thuộc vào môi trường tôi đang xem xét

https://www.aizatto.com/notes/typescript

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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.