Co robi opcja tsconfig „lib”?

129

Mam istniejący projekt, który ma następujący wiersz w tsconfig.json:

lib:["2016", "DOM"]

Jaki jest tego cel?

Jedyne informacje, które udało mi się znaleźć, to:

Określ plik biblioteki, który ma zostać uwzględniony w kompilacji. Wymaga języka TypeScript w wersji 2.0 lub nowszej.

Co to znaczy?

Greg Gum
źródło
Czy to odpowiada na twoje pytanie? Co tak naprawdę robi opcja „lib” języka TypeScript?
użytkownik

Odpowiedzi:

75

Jest to nowa funkcja maszynopisu 2, dlatego nadal nie ma dokumentacji, ale możesz o niej przeczytać w artykule Co nowego w Typescript 2.0 :

z --lib możesz określić listę wbudowanych grup deklaracji API, które możesz dołączyć do projektu. Na przykład, jeśli spodziewasz się, że Twoje środowisko wykonawcze będzie obsługiwać Map, Set i Promise (np. Większość dzisiejszych przeglądarek), po prostu dołącz --lib es2015.collection, es2015.promise. Podobnie możesz wykluczyć deklaracje, których nie chcesz umieszczać w swoim projekcie, np. DOM, jeśli pracujesz nad projektem węzła przy użyciu --lib es5, es6.

Jest też lista API groupsobsługiwanych i bardzo krótki przykład w tym linku.

Nitzan Tomer
źródło
25
Chodziło mi o to, że kiedy określam "lib": ["es5"], czy to po prostu oznacza, że ​​mogę używać es5typów w tsnarzekaniu kompilatora, czy też jakiś rodzaj wypełnień poly będzie dostarczony przez tsc?
Max Koretskyi
9
Różne biblioteki można znaleźć tutaj: github.com/Microsoft/TypeScript/tree/master/lib Są to pliki definicji, których używa kompilator
Nitzan Tomer
5
Rozumiem, dziękuję, więc w zasadzie oznacza to, że jeśli podam "lib": ["es5"]i nie podam "dom", tscto narzekam na użycie metod specyficznych dla DOM, prawda?
Max Koretskyi
12
Pamiętaj, że dołączenie „es2015.promise” lub czegokolwiek innego nie zawiera pliku polyfill w skompilowanym kodzie. Zamiast tego po prostu powiadamiasz kompilator, że Twój kod używa obietnic i powinno to być w porządku. Jeśli chcesz dodać wypełnienia obietnicami, rozważ zaimportowanie wypełnienia polyfill w swoim kodzie lub użycie babel z odpowiednią maszyną (babel-preset-env) jako post-step (lub następny program ładujący w webpacku)
Dmitrii Sorin
20
Grupy te składają kompilatorowi obietnicę: „proszę nie narzekać na te interfejsy API, obiecuję, że przeglądarka będzie je obsługiwać”. Np. Jeśli dodasz es6i nie uwzględnisz polyfillów , stare przeglądarki będą się dławić.
Steve Clay