TypeScript: comment définir des typages personnalisés pour le paquet npm installé?

J'aime utiliser rx-nœud à l'intérieur de la Machine

import RxNode from 'rx-node';

J'ai installé rx-nœud à l'aide de mnp

$ npm install rx-node --save

J'ai cherché des définitions de type, mais sans aucun résultat

$ typings search rx-node
No results found for search

Comment puis-je définir des définitions de type personnalisées pour le module npm installé RX-node? Où dois-je stocker le fichier de définition de type? Comment configurer TypeScript (tsconfig.JSON et typings.json )?

Edit: Merci à Aleksey L. et David Bohunek j'ai réussi à définir un {[6] } qui ressemble à ceci

declare module "rx-node" {
  import {Observable} from '@reactivex/rxjs';
  import {ReadLine} from "readline";

  function fromReadLineStream(stream: ReadLine): Observable<string>
}

J'ai installé @reactivex/rxjs

npm install --save @reactivex/rxjs

Depuis que j'ai eu une erreur

node_modules@reactivexrxjsdistcjsObservable.d.ts (10,66): Cannot find name 'Promise'. (2304)

J'ai changé la cible dans tsconfig.json à es6.

31
demandé sur Community 2016-06-05 15:33:34

2 réponses

Vous pouvez ajouter des définitions personnalisées aux typages .json . Par exemple, ayant la structure de dossier suivante:

/typings
    /custom
        rx-node.d.ts
    /global
        ...

Où RX-noeud.D. ts est votre fichier de typages personnalisés. Par exemple:

declare module RxNode {
    export interface ...
}

Puis installez avec une commande

typings install file:typings/custom/rx-node.d.ts --save --global

Ou manuellement: dans les typages .JSON ajoute une référence à ce fichier de typages:

{
    "name": "TestName",
    "version": false,
    "globalDependencies": {
        "rx-node": "file:typings/custom/rx-node.d.ts"
    }
}

Et exécuter typings install

34
répondu Aleksey L. 2016-08-30 09:00:45

Créer un nouveau fichier, appelé rx-node.d.ts et assurez-vous qu'il est référencé dans votre tsconfig.json, soit directement ou à partir d'un autre fichier, par exemple typings/index.d.ts. Ensuite, vous pouvez commencer par quelque chose comme ceci:

///<reference path="rx.d.ts" />

declare namespace RxNode  {

    export interface Emitter<T>{

    }

    export function toEventEmitter<T>(observable: Rx.Observable<T>, eventName: string): Emitter<T>;
}

Cette question / réponse peut être utile: Comment écrire un fichier D. ts à partir d'un fichier existant .fichier js?

Si vous créez un joli fichier de définition de typages de haute qualité, contribuez à https://github.com/DefinitelyTyped/DefinitelyTyped

1
répondu David Bohunek 2017-05-23 12:34:08