Tùy chọn tsconfig làm gì lib lib làm gì?


129

Tôi có một dự án hiện có có dòng này trong tsconfig.json:

lib:["2016", "DOM"]

mục đích của việc này là gì?

Thông tin duy nhất tôi có thể tìm thấy là đây:

Chỉ định tệp thư viện sẽ được bao gồm trong quá trình biên dịch. Yêu cầu TypeScript phiên bản 2.0 trở lên.

Điều đó nghĩa là gì?


Điều này có trả lời câu hỏi của bạn không? Tùy chọn "lib" TypeScript thực sự làm gì?
người dùng

Câu trả lời:


75

Đây là một tính năng bản thảo 2 mới và vì vậy nó vẫn thiếu tài liệu, nhưng bạn có thể đọc về tính năng này trong phần mới của Bản mô tả 2.0 :

với --lib, bạn có thể chỉ định danh sách các nhóm khai báo API tích hợp mà bạn có thể chọn đưa vào dự án của mình. Ví dụ: nếu bạn mong muốn thời gian chạy của mình có hỗ trợ cho Map, Set và Promise (ví dụ: hầu hết các trình duyệt thường xanh hiện nay), chỉ cần bao gồm --lib es2015.collection, es2015.promise. Tương tự, bạn có thể loại trừ các khai báo mà bạn không muốn đưa vào dự án của mình, ví dụ DOM nếu bạn đang làm việc trên một dự án nút bằng cách sử dụng --lib es5, es6.

Ngoài ra còn có một danh sách các API groupshỗ trợ và một ví dụ rất ngắn trong liên kết đó.


25
Tôi có nghĩa là khi tôi chỉ định "lib": ["es5"], điều đó có nghĩa đơn giản là tôi có thể sử dụng es5các loại để tskhiếu nại trình biên dịch, hoặc một số loại poly-điền sẽ được cung cấp bởi tsc?
Max Koretskyi

9
Các lib khác nhau có thể được tìm thấy ở đây: github.com/Microsoft/TypeScript/tree/master/lib Chúng là các tệp định nghĩa mà trình biên dịch sử dụng
Nitzan Tomer

5
Tôi thấy, cảm ơn, vì vậy điều này về cơ bản có nghĩa là, nếu tôi chỉ định "lib": ["es5"]và không chỉ định "dom", tscsẽ phàn nàn về việc sử dụng các phương thức cụ thể của DOM, đúng không?
Max Koretskyi

12
Coi chừng bao gồm "es2015.promise" hoặc bất cứ điều gì không bao gồm một polyfill vào mã được biên dịch của bạn. Thay vào đó, bạn chỉ cần thông báo cho trình biên dịch rằng mã của bạn đang sử dụng lời hứa và nó sẽ ổn với điều đó. Nếu bạn cần thêm các polyfill hứa hẹn, hãy xem xét nhập polyfill trong mã của bạn hoặc sử dụng babel với máy móc tương ứng (babel-preset-env) làm bước sau (hoặc trình tải tiếp theo trong webpack)
Dmitrii Sorin

20
Các nhóm này hứa với trình biên dịch, "vui lòng không phàn nàn về các API này, tôi hứa trình duyệt sẽ hỗ trợ chúng." Ví dụ: Nếu bạn thêm es6không bao gồm các polyfill , các trình duyệt cũ sẽ bị sặc.
Steve Clay
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.