Що робить опція tsconfig “lib”?


129

У мене є існуючий проект, який містить цю лінію в tsconfig.json:

lib:["2016", "DOM"]

Яка мета цього?

Єдина інформація, яку я міг знайти, така:

Вкажіть файл бібліотеки, який буде включений до компіляції. Потрібна TypeScript версії 2.0 або новішої.

Що це означає?


Чи відповідає це на ваше запитання? Що насправді робить опція "lib" TypeScript?
— користувач

Відповіді:


75

Це нова функція typecript 2, і тому вона все ще не має документації, але ви можете прочитати про неї у розділі Що нового в Typescript 2.0 :

за допомогою --lib ви можете вказати список вбудованих груп оголошень API, які ви можете включити у свій проект. Наприклад, якщо ви очікуєте, що під час виконання програми вам буде підтримка Map, Set та Promise (наприклад, більшість вічнозелених браузерів сьогодні), просто включіть --lib es2015.collection, es2015.promise. Так само ви можете виключити декларації, які не хочете включати у свій проект, наприклад, DOM, якщо ви працюєте над проектом вузла, використовуючи --lib es5, es6.

Також є список API groupsпідтримуваних, і дуже короткий приклад цього посилання.


25
Я мав на увазі, що коли я вказую "lib": ["es5"], чи це просто означає, що я можу використовувати es5типи для tsскарги на компілятор, або якась полі-заповнення буде надана tsc?
— Макс Корецький

9
Тут можна знайти різні версії : github.com/Microsoft/TypeScript/tree/master/lib Це файли визначення, які використовує компілятор
— Nitzan Tomer

5
Я бачу, дякую, так це в основному означає, що якщо я вкажу "lib": ["es5"]і не вкажу "dom", tscпоскаржиться на використання специфічних методів DOM, правильно?
— Макс Корецький

12
Будьте уважні, що включаючи "es2015.promise" або що б там не було, у ваш скомпільований код не входить polyfill. Натомість ви просто повідомте компілятору, що ваш код використовує обіцянки, і з цим повинно бути гаразд. Якщо вам потрібно додати полі-заповнення з обіцянками, подумайте, чи імпортувати полі-заповнення у свій код, або використовувати babel із відповідною технікою (babel-preset-env) в якості покрокового кроку (або наступного завантажувача в webpack)
— Дмитро Сорін,

20
Ці групи дають обіцянку компілятору, "будь ласка, не нарікайте на ці API, я обіцяю, що браузер їх підтримає". Наприклад, якщо ви додаєте поліфілиes6 та не включаєте їх у себе , старі браузери задушаться.
— Стів Клей
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.