typescript typescript-typings typescript2.0

Typescript 2.0. Campo "types" en tsconfig.json



typescript-typings typescript2.0 (2)

A partir de TypeScript 2. * el ''tsconfig.json'' tiene las siguientes dos propiedades disponibles:

{ ''typeRoots'': [], ''types'': [] }

Detallaré ambos en orden.

  1. ''typeRoots'' especifica las carpetas raíz en las que el transpiler debe buscar las definiciones de tipo (por ejemplo: ''node_modules'').

    • Si ha estado usando mecanografiado, sabe que para bibliotecas diferentes que no se han escrito utilizando mecanografiado, necesita definiciones para que el compilador pueda reconocer variables globales y soporte de IntelliSense.

    • Este problema ha sido abordado por proyectos (repos) tales como ''DefinatelyTyped'' que usan herramientas como tsd o el módulo de typings para descargar los typings necesarios para su proyecto, pero también vienen con su propio archivo ''json'' que debe mantenerse por separado.

    • Con TS2. * Ahora puede buscar dependencias de definición usando ''npm''. Entonces, en lugar de usar una biblioteca cli separada como tsd o typings , ahora puedes usar: npm i @types/{LIB} esta manera, todas las dependencias se administran usando package.json y puedes eliminar fácilmente la necesidad de otro ''json'' archivo para mantener en su proyecto.

  1. ''tipos'' son los nombres reales de la biblioteca que se encontrarán en el tipo raíz.

    • así que digamos que tiene la configuración predeterminada para typeRoots que se parecería a algo así como:

      "typeRoots": [ "./node_modules/@types" ]

    • digamos que ahora quiere usar jazmín como marco de prueba para su proyecto, por lo que tiene configurada su carpeta typeRoot , todo lo que tiene que hacer ahora es ejecutar: npm i @types/jasmine --save-dev

    • después de instalar el paquete de definición, solo necesita configurar su propiedad ''types'' en ''tsconfig.json'' de la siguiente manera:

      "types": [ "core-js", "jasmine", "requirejs", "chance" ]

Para concluir, básicamente le dice al compilador de TS lo siguiente:

typeRoots : necesita buscar typings en estas carpetas. tipos : en una de las carpetas proporcionadas anteriormente, encontrará definiciones para estos archivos framworks (subcarpetas).

Entonces, usando el escenario anterior, y si agregamos otra raíz:

"typeRoots": [ "./node_modules/@types", "./custom_definitions" ], "types": [ "jasmine", ]

TS ahora buscará archivos de definición en

./node_modules/@types/jasmine

o

./custom_definitions/jasmine

¡Espero que esto ayude!

No entiendo el significado del campo types en tsconfig.json . En la documentación, he leído dicho texto:

"types": { "description": "Type declaration files to be included in compilation. Requires TypeScript version 2.0 or later.", "type": "array", "items": { "type": "string" } },

Hasta ahora, como entiendo si instalo @types/express , debería agregar esa cadena en tsconfig.json

{ "compilerOptions": { ... "types": ["lodash"] } }

pero todo funciona bien sin eso. Y ahora no entiendo, ¿por qué necesito el campo de types


No necesita el campo de tipos necesariamente. Aquí está la parte importante a tener en cuenta de la documentation :

Por defecto, todos los paquetes visibles "@types" están incluidos en su compilación. Los paquetes en node_modules / @ types de cualquier carpeta adjunta se consideran visibles

Por lo tanto, si ha seguido las convenciones o ha utilizado un conjunto de herramientas como npm para descargar paquetes de tipo @types, no necesita configurar tipos o tipos en su configuración, ya que funcionará de forma predeterminada con la estructura de carpetas predeterminada.