À quoi sert l'option tsconfig «lib»?


130

J'ai un projet existant qui a cette ligne dans tsconfig.json:

lib:["2016", "DOM"]

Quel est le but de cela?

La seule information que j'ai pu trouver est la suivante:

Spécifiez le fichier de bibliothèque à inclure dans la compilation. Nécessite TypeScript version 2.0 ou ultérieure.

Qu'est-ce que ça veut dire?


Est-ce que cela répond à votre question? Que fait vraiment l'option TypeScript "lib"?
— utilisateur le

Réponses:


76

Il s'agit d'une nouvelle fonctionnalité de typescript 2 et il manque donc toujours de documentation, mais vous pouvez en savoir plus dans les nouveautés de Typescript 2.0 :

avec --lib, vous pouvez spécifier une liste de groupes de déclaration API intégrés que vous pouvez choisir d'inclure dans votre projet. Par exemple, si vous vous attendez à ce que votre environnement d'exécution prenne en charge Map, Set et Promise (par exemple, la plupart des navigateurs à feuilles persistantes aujourd'hui), incluez simplement --lib es2015.collection, es2015.promise. De même, vous pouvez exclure les déclarations que vous ne souhaitez pas inclure dans votre projet, par exemple DOM si vous travaillez sur un projet de nœud en utilisant --lib es5, es6.

Il y a aussi une liste de ceux API groupsqui sont pris en charge et un très court exemple dans ce lien.


26
Je voulais dire que lorsque je spécifie "lib": ["es5"], cela signifie-t-il simplement que je peux utiliser des es5types pour me tsplaindre du compilateur, ou qu'une sorte de poly-remplissages sera fournie par tsc?
— Max Koretskyi

9
Les différentes bibliothèques peuvent être trouvées ici: github.com/Microsoft/TypeScript/tree/master/lib Ce sont des fichiers de définition que le compilateur utilise
— Nitzan Tomer

5
Je vois, merci, donc cela signifie essentiellement que si je spécifie "lib": ["es5"]et ne spécifie pas "dom", tscje me plaindrai de l'utilisation de méthodes spécifiques au DOM, n'est-ce pas ?
— Max Koretskyi

12
Attention, le fait d'inclure "es2015.promise" ou quoi que ce soit n'inclut pas un polyfill dans votre code compilé. Au lieu de cela, vous informez simplement le compilateur que votre code utilise des promesses et que cela devrait être correct. Si vous avez besoin d'ajouter des promesses polyfills, envisagez soit d'importer le polyfill dans votre code, soit d'utiliser babel avec les machines correspondantes (babel-preset-env) comme post-step (ou prochain chargeur dans le webpack)
— Dmitrii Sorin

20
Ces groupes font une promesse au compilateur, "s'il vous plaît ne vous plaignez pas de ces API, je promets que le navigateur les prendra en charge." Par exemple, si vous ajoutez es6et n'incluez pas de polyfills , les anciens navigateurs s'étoufferont.
— Steve Clay
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.