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
.
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
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