web-dev-qa-db-fra.com

Que signifie /// <reference types = "node" />?

J'avais un problème avec TypeScript et node et je suis tombé sur un correctif (je recevais une plainte TS que 'process' n'était pas défini, comme dans process.env dans Node). Tout ce que j'avais à faire était de coller une ligne en haut de mon fichier:

/// <reference types="node" />

Je ne comprends pas la syntaxe. Le compilateur TypeScript lit-il en quelque sorte un commentaire? Comment cela marche-t-il?

15
cham

Celles-ci sont appelées "directives triple barre oblique" (documents TypeScript)

Comme indiqué sur la première ligne de ce lien:

Les directives à triple barre oblique sont des commentaires sur une seule ligne contenant une seule balise XML. Le contenu du commentaire est utilisé comme directives de compilation.

Alors oui, le compilateur TypeScript prend cela en compte lors de la compilation et prend les mesures appropriées.

Dans ce cas, puisque vous utilisez une directive types, vous dites au compilateur que ce fichier a une dépendance sur les typages node.

Cela dit, les documents indiquent également que pour les directives types:

Utilisez ces directives uniquement lorsque vous créez un d.ts fichier à la main

Donc, si vous l'avez ajouté, faites un .ts fichier plutôt qu'un .d.ts fichier, vous êtes peut-être en train de configurer d'autres problèmes.

Pour déclarer une dépendance sur un package @types dans un fichier .ts, utilisez plutôt --types sur la ligne de commande ou dans votre tsconfig.json. Voir en utilisant @types, typeRoots et types dans les fichiers tsconfig.json pour plus de détails.

13
casieber