web-dev-qa-db-fra.com

Comment ajouter des "typings" personnalisés dans TypeScript 2.0 / 3.0

Selon this , le système de typages d'articles pour TypeScript 2.0 a changé et il est donc difficile de savoir comment attacher des typages personnalisés maintenant. Dois-je toujours créer un package NPM pour cela?

Merci d'avance!

44
Lu4

Vous pouvez créer des typages personnalisés locaux uniquement pour votre projet, où vous pouvez déclarer des types pour les bibliothèques JS. Pour cela, vous devez:

  1. Créez une structure de répertoire pour conserver vos fichiers de déclaration de type afin que votre structure de répertoire ressemble à ceci:

    .
    ├── custom_typings
    │   └── some-js-lib
    │       └── index.d.ts
    └── tsconfig.json
    
  2. Dans le index.d.ts fichier, ajoutez une déclaration pour votre bibliothèque JS:

    declare module 'some-js-lib' {
      export function hello(world: string): void
    }
    
  3. Ajoutez une référence à cette déclaration de type dans la section compilerOptions de votre tsconfig.json:

    {
      "compilerOptions": {
        ...
        "typeRoots": ["node_modules/@types", "custom_typings"]
      },
      ...
    }
    
  4. Utilisez le module déclaré dans votre code:

    import { hello } from 'some-js-lib'
    
    hello('world!')
    
66
MisterMetaphor

En supposant que votre paquet js externe soit installé sous node_modules, je pense qu'il y a deux options:

  • fournissez un TypeScript fichier de déclaration dans le paquet, et ajoutez-y une référence:

    // node_modules/secret-package/index.d.ts
    export interface SecretInterface {
      // ¯\_(ツ)_/¯
    }
    

    Et référencez le fichier de typages dans le package.json:

    // node_modules/secret-package/package.json
    {
       ..., 
       "typings": "./index.d.ts",
       ...,
    }
    
  • augmentez le module dans un fichier de déclaration de votre projet

    // index.d.ts
    declare module 'secret-package' {
      interface SecretInterface {
        // ¯\_(ツ)_/¯
      }
    }
    
2
Pelle Jacobs