34 votes

TypeScript: Comment définir des typings personnalisés pour le package 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 la ngp

$ 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 de pour mise en place de mnp module rx-nœud? Où dois-je conserver la définition de type de fichier? Comment configurer la Machine (tsconfig.json et typings.json)?

Edit: Merci à Alexis L. et David Bohunek j'ai réussi à définir un rx-node.d.ts 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 j'ai une erreur

node_modules\@reactivex\rxjs\dist\cjs\Observable.d.ts (10,66): Cannot find name 'Promise'. (2304)

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

32voto

Aleksey L. Points 10476

Vous pouvez ajouter des définitions personnalisées à typings.json . Par exemple, la structure de dossiers suivante:

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

où rx-node.d.ts est votre fichier de typage personnalisé. 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 typings.json, ajoutez une référence à ce fichier de typage:

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

Et exécutez typings install

1voto

David Bohunek Points 2821

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 avec 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 pourrait être helpuful: Comment écrire d.ts fichier à partir de l'existant .fichier js?

Si vous créez une belle, de haute qualité typings fichier de définition, de contribuer à https://github.com/DefinitelyTyped/DefinitelyTyped

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X