Tipificaciones de TypeScript en paquetes de organización npm @types

135

He notado que hay una organización nty @types , que contiene paquetes de mecanografía, pero no puedo encontrar ninguna documentación al respecto. ¿Cómo están destinados a ser utilizados?

¿Está destinado a ser utilizado con la herramienta de tipings ? Si es así, ¿cómo instalarlos? Por ejemplo, hay un @types/openlayerspaquete, pero typings search npm:openlayersno devuelve nada.

¿Está destinado a ser utilizado por separado de la herramienta de tipificación? Por ejemplo, instalado directamente con npm?

Ronald Zarīts
fuente
11
gracias por esta pregunta.
Léon Pelletier

Respuestas:

109

A partir de TypeScript 2.0, las tipificaciones ya no son necesarias. La organización npm es una entidad para configurar un equipo de desarrolladores. Creo que Microsoft configuró la organización @types en npm y agregó el equipo de desarrolladores de TypeScript a la organización. Los paquetes en la organización @types se publican automáticamente desde DefinitelyTyped usando la herramienta de publicación de tipos según los documentos .

Además, hay otra forma de agregar typesa sus paquetes:

En tu package.json

Si su paquete tiene un .jsarchivo principal , también deberá indicar el archivo de declaración principal en su package.jsonarchivo. Establezca la typespropiedad para que apunte a su archivo de declaración incluido. Por ejemplo:

{
    "name": "awesome",
    "author": "Vandelay Industries",
    "version": "1.0.0",
    "main": "./lib/main.js",
    "types": "./lib/main.d.ts"
}

Tenga en cuenta que el "typings"campo es sinónimo de "types", y podría usarse también.

También tenga en cuenta que si su archivo de declaración principal se nombra index.d.tsy vive en la raíz del paquete (al lado de index.js) no es necesario que marque la "types"propiedad, aunque es recomendable hacerlo.

En cuanto a los tipos de búsqueda

En su mayor parte, los paquetes de declaración de tipo siempre deben tener el mismo nombre que el nombre del paquete en npm, pero con el prefijo @ types /, pero si lo necesita, puede consultar https://aka.ms/types para encontrar el paquete para tu biblioteca favorita

De: http://www.typescriptlang.org/docs/handbook/declaration-files/consumption.html

Pero cuando lo hice npm search @types/openlayers, no obtuve ningún resultado. Pero hacer la búsqueda desde la interfaz web me devolvió los resultados. Así que supongo npm searchque no busca entre organizaciones.

randominstanceOfLivingThing
fuente
¡Gran respuesta! Las ediciones menores serían buenas, pero esto hace un trabajo mucho mejor al explicar el estado actual.
Ronald Zarīts
Dado que especifica un único archivo en su package.jsonvirtud de la typespropiedad, me di cuenta de que estás hablando expediente de declaración incluido . ¿Cuál sería la forma más fácil de lograr esto en un sistema de compilación automatizado como Gulp?
Nicky
¿Tengo que agregar el "main"campo si el principal se llama index.js?
Knu
2
Muchas gracias por este "Tenga en cuenta que el "typings"campo es sinónimo "types"y podría usarse también"
Serhii Popov
42

El anuncio en el blog de TypeScript responde a esto: El futuro de los archivos de declaración

Resumen:

La @typesorganización npm es para obtener definiciones de tipo con npm. El uso de estas definiciones de tipo es una característica que viene en TypeScript 2.0.

Esto reemplazará los proyectos / herramientas actuales, tales como tipings y tsd , aunque estos continuarán siendo apoyados por algún tiempo.

Ronald Zarīts
fuente
1
Hola Ron, así que estoy tratando de obtener estas configuraciones, pero no parece que VSCode se esté dando cuenta de que las tengo instaladas. Después de usar algo como core-jsw / npm i @types/core-js --save, puedo ver que está en la carpeta, pero el proyecto aún arroja errores para las cosas. ¿Hay algo más que debería estar haciendo? ¿Debo dejar que tsconfig esté al tanto de @types o algo así? Como dijo Sean, todavía no hay documentación para los tipos :(
Mark Pieszak - Trilon.io
@ MarkPieszak debe asegurarse de que VSCode esté utilizando TS2.0. Vea cómo instalar TypeScript localmente y usarlo en VSCode aquí: github.com/Microsoft/TypeScript/wiki/Nightly-drops
nino.porcino
Sí, eso fue todo @ nino.porcino gracias :) tsdknecesitaba señalar una instalación 2.0beta de TS
Mark Pieszak - Trilon.io
al menos para algunos proyectos de equipo que estamos actualizando (y también en otros proyectos de GH que vimos) también se debe actualizar tsconfig.jsoncon una "types"propiedad de matriz que enumere esos nombres de módulos, por ejemplo"types": ["core-js"]
superjos
7

Esta será una característica que se implementa en Typecript 2.0. Esto proporciona compatibilidad de tipo para módulos / bibliotecas UMD y sus respectivas definiciones.

Consulte ( Soporte integrado para las definiciones de módulos UMD ) para obtener una mejor comprensión de los problemas actuales con las tipificaciones ambientales.

Sean Larkin
fuente
¡Gracias! Esto es útil, pero no veo el problema de GitHub discutiendo la organización @types npm. ¿La organización @types es específicamente para el /// <referenceescenario UMD ? ¿El compilador TypeScript buscará automáticamente los tipos debajo node_modules/@types(como cuando busca módulos en node_modulescuándo 'moduleResolution': 'node')? ¿Qué significa esto typings? También maneja las dependencias ambientales. ¿Está relacionado de alguna manera?
Ronald Zarīts