Что делает опция tsconfig «lib»?


130

У меня есть существующий проект, в котором есть эта строка в tsconfig.json:

lib:["2016", "DOM"]

Какая у этого цель?

Единственная информация, которую я смог найти, это:

Укажите файл библиотеки для включения в компиляцию. Требуется TypeScript версии 2.0 или новее.

Что это значит?


Ответы:


76

Это новая функция typescript 2, поэтому по ней до сих пор отсутствует документация, но вы можете прочитать о ней в разделе Что нового в Typescript 2.0 :

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

В API groupsэтой ссылке также есть список поддерживаемых и очень короткий пример.


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

9
Различные библиотеки можно найти здесь: github.com/Microsoft/TypeScript/tree/master/lib. Это файлы определений, которые использует компилятор
— Ницан Томер,

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

12
Помните, что включение es2015.promise или чего-либо еще не включает полифилл в ваш скомпилированный код. Вместо этого вы просто уведомляете компилятор о том, что ваш код использует обещания, и с этим все в порядке. Если вам нужно добавить полифиллы обещаний, рассмотрите возможность импорта полифиллов в свой код или использования babel с соответствующим механизмом (babel-preset-env) в качестве пост-шага (или следующего загрузчика в webpack)
— Дмитрий Сорин

20
Эти группы обещают компилятору: «Пожалуйста, не жалуйтесь на эти API, я обещаю, что браузер их поддержит». Например, если вы добавляете полифиллыes6 и не включаете их , старые браузеры задыхаются.
— Стив Клэй,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.