Typages TypeScript dans les packages d'organisation npm @types


135

J'ai remarqué qu'il existe une organisation npm @types , qui contient des packages de saisie, mais ne trouve aucune documentation dessus. Comment sont-ils censés être utilisés?

Est-il destiné à être utilisé avec l' outil de saisie ? Si oui, comment les installer? Par exemple, il y a un @types/openlayerspackage, mais typings search npm:openlayersne renvoie rien.

Est-il destiné à être utilisé séparément de l'outil de saisie? Par exemple installé directement avec npm?


11
Merci pour cette question.
Léon Pelletier

Réponses:


109

Depuis TypeScript 2.0, les typages ne sont plus nécessaires. L'organisation npm est une entité pour mettre en place une équipe de développeurs. Je pense que Microsoft a configuré l'organisation @types dans npm et a ajouté l'équipe de développeurs TypeScript à l'organisation. Les packages sous l'organisation @types sont publiés automatiquement à partir de DefinitelyTyped à l'aide de l'outil types-publisher selon les documents .

De plus, il existe une autre façon d'ajouter typesà vos packages:

Dans votre package.json

Si votre package a un .jsfichier principal , vous devrez également indiquer le fichier de déclaration principal dans votre package.jsonfichier. Définissez la typespropriété pour qu'elle pointe vers votre fichier de déclaration groupé. Par exemple:

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

Notez que le "typings"champ est synonyme de "types", et pourrait également être utilisé.

Notez également que si votre fichier de déclaration principal est nommé index.d.tset se trouve à la racine du package (à côté de index.js), vous n'avez pas besoin de marquer la "types"propriété, bien qu'il soit conseillé de le faire.

Concernant les types de recherche

Pour la plupart, les packages de déclaration de type doivent toujours avoir le même nom que le nom du package sur npm, mais avec le préfixe @ types /, mais si vous en avez besoin, vous pouvez consulter https://aka.ms/types pour trouver le package pour votre bibliothèque préférée.

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

Mais quand je l'ai fait npm search @types/openlayers, je n'ai obtenu aucun résultat. Mais faire la recherche depuis l'interface Web m'a renvoyé les résultats. Donc je suppose npm searchque ne recherche pas à travers les organisations.


Très bonne réponse! Des modifications mineures seraient bien, mais cela explique bien mieux l'état actuel.
Ronald Zarīts

Puisque vous spécifiez un seul fichier dans votre package.jsonsous la typespropriété, j'ai remarqué que vous parlez de fichier de déclaration groupé . Quel serait le moyen le plus simple d'y parvenir dans un système de construction automatisé comme gulp?
Nicky

Dois-je ajouter le "main"champ si le principal est nommé index.js?
Knu

2
Merci beaucoup pour ce "Notez que le "typings"champ est synonyme de "types", et pourrait également être utilisé"
Serhii Popov

42

Une annonce sur le blog TypeScript répond à ceci: L'avenir des fichiers de déclaration

Résumé:

L' @typesorganisation npm sert à obtenir des définitions de type avec npm. L'utilisation de ces définitions de type est une fonctionnalité à venir dans TypeScript 2.0.

Cela remplacera les projets / outils actuels tels que les typages et tsd , bien qu'ils continueront à être pris en charge pendant un certain temps.


1
Hey Ron, donc j'essaye d'obtenir ces configurations, mais il ne semble pas que VSCode se rende compte que je les ai installées. Après avoir utilisé quelque chose comme core-jsw / npm i @types/core-js --save, je peux voir qu'il est dans le dossier, mais le projet génère toujours des erreurs pour les choses. Y a-t-il autre chose que je devrais faire? Dois-je laisser tsconfig être au courant de @types ou de quelque chose? Comme Sean l'a dit, il n'y a encore aucune documentation pour les types :(
Mark Pieszak - Trilon.io

@MarkPieszak vous devez vous assurer que VSCode utilise TS2.0. Voyez comment installer TypeScript localement et l'utiliser dans VSCode ici: github.com/Microsoft/TypeScript/wiki/Nightly-drops
nino.porcino

Ouais c'était ça @ nino.porcino merci :) tsdkbesoin d'être pointé vers une installation 2.0beta de TS
Mark Pieszak - Trilon.io

au moins pour certains projets d'équipe que nous mettons à jour (et aussi dans d'autres projets GH que nous avons vus), il faut également mettre tsconfig.jsonà jour avec une "types"propriété de tableau répertoriant ces noms de modules, par exemple"types": ["core-js"]
superjos

7

Ce sera une fonctionnalité qui sera déployée dans Typescript 2.0. Cela fournit une prise en charge de type pour les modules / bibliothèques UMD et leurs définitions respectives.

Voir ( Prise en charge intégrée des définitions de module UMD ) pour mieux comprendre les problèmes actuellement liés aux typages ambiants.


Je vous remercie! C'est utile, mais je ne vois pas le problème GitHub traitant de l'organisation @types npm. L'organisation @types est-elle spécifiquement conçue pour le /// <referencescénario UMD ? Le compilateur TypeScript recherchera-t-il automatiquement les types sous node_modules/@types(comme il recherche les modules dans node_moduleswhen 'moduleResolution': 'node')? Qu'est-ce que cela signifie pour typings- il gère également les dépendances ambiantes. Est-ce lié d'une manière ou d'une autre?
Ronald Zarīts
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.