¿Qué hace la opción tsconfig "lib"?


129

Tengo un proyecto existente que tiene esta línea en tsconfig.json:

lib:["2016", "DOM"]

¿Cuál es el propósito de esto?

La única información que pude encontrar es esta:

Especifique el archivo de biblioteca que se incluirá en la compilación. Requiere TypeScript versión 2.0 o posterior.

Qué significa eso?


Respuestas:


75

Esta es una nueva característica del mecanografiado 2 y, por lo tanto, aún carece de documentación, pero puede leer sobre ella en Novedades de la Mecanografía 2.0 :

con --lib puede especificar una lista de grupos de declaración de API incorporados que puede elegir incluir en su proyecto. Por ejemplo, si espera que su tiempo de ejecución sea compatible con Map, Set y Promise (por ejemplo, la mayoría de los navegadores de hoja perenne de la actualidad), simplemente incluya --lib es2015.collection, es2015.promise. Del mismo modo, puede excluir declaraciones que no desea incluir en su proyecto, por ejemplo, DOM si está trabajando en un proyecto de nodo utilizando --lib es5, es6.

También hay una lista de los API groupsque son compatibles y un ejemplo muy breve en ese enlace.


25
Quise decir que cuando especifico "lib": ["es5"], ¿significa simplemente que puedo usar es5tipos para tsquejarme del compilador, o algún tipo de rellenos polivinílicos serán proporcionados por tsc?
— Max Koretskyi

9
Las diferentes bibliotecas se pueden encontrar aquí: github.com/Microsoft/TypeScript/tree/master/lib Son archivos de definición que utiliza el compilador
— Nitzan Tomer

55
Ya veo, gracias, así que esto básicamente significa que si especifico "lib": ["es5"]y no especifico "dom", tscme quejaré sobre el uso de métodos específicos de DOM, ¿correcto?
— Max Koretskyi

12
Tenga en cuenta que incluir "es2015.promise" o lo que sea no incluye un polyfill en su código compilado. En su lugar, simplemente notifica al compilador que su código está usando promesas y eso debería estar bien. Si necesita agregar polyfills prometedores, considere importar el polyfill en su código o usar babel con la maquinaria correspondiente (babel-preset-env) como un paso posterior (o el próximo cargador en el paquete web)
— Dmitrii Sorin

20
Estos grupos hacen una promesa al compilador, "por favor, no se queje de estas API, prometo que el navegador las admitirá". Por ejemplo, si agrega es6y no incluye polyfills , los navegadores antiguos se ahogarán.
— Steve Clay
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.