web-dev-qa-db-fra.com

Comment configurer tsconfig.json pour des saisies qui ne sont pas dans @types?

J'utilise un fichier tsconfig.json pour spécifier les saisies que je souhaite utiliser dans mon application.

{
   "compilerOptions": {
       "types" : ["node", "lodash", "express"]
   }
}

Cela importe les typages de ./node_modules/@types/node, ./node_modules/@types/lodash et ./node_modules/@types/expres.

Ma question est de savoir comment configurer les typages pour les modules autonomes?

Mon exemple est le package zone.js qui contient à la fois le code de bibliothèque et les définitions de type.

  • ./node_modules/zone.js/dist/zone.js
  • ./node_modules/zone.js/dist/zone.min.js
  • ./ node_modules/zone.js/dist/zone.js.d.ts

Que dois-je mettre dans mon fichier tsconfig.json pour inclure zone.js.d.ts?

7
Steven Liekens

Il vous suffit d'ajouter zone.js au types dans votre tsconfig.json:

{
   "compilerOptions": {
       "types" : ["node", "lodash", "express", "zone.js"]
   }
}

Notez que vous n'avez pas besoin d'inclure tous les types comme celui-ci. Définissez les définitions à partir de @types/* les packages sont automatiquement inclus.

Vous pouvez donc supprimer la déclaration des types dans votre tsconfig.json et tous les @types/* les packages seraient automatiquement référencés.

Afin d'obtenir zone.js pour travailler, vous pouvez soit l'inclure dans un seul fichier comme celui-ci:

/// <reference types="zone.js" />

Ou si vous le souhaitez disponible dans l'ensemble de votre projet, vous pouvez ajouter un index.d.ts à la racine de votre projet et y mettre la référence.

4
a-ctor

Vous pouvez placer le fichier n'importe où, mais vous devez en informer le compilateur, soit en l'ajoutant dans tsconfig.json ou en tant que ///<reference>. Pour tsconfig ajoutez le champ include:

{
    "compileOnSave": false,
    "compilerOptions": {
        ..
    },
    "include": [
        "zone.d.ts",
    ]
}