web-dev-qa-db-ja.com

TypeScript:インストールされたnpmパッケージのカスタムタイプを定義する方法

TypeScript内で rx-node を使用したい

import RxNode from 'rx-node';

Npmを使用して rx-node をインストールしました

$ npm install rx-node --save

型定義を検索しましたが、結果はありません

$ typings search rx-node
No results found for search

インストールされたnpmモジュールのカスタムタイプ定義を定義するにはどうすればよいですか rx-node ?型定義ファイルはどこに保存すればよいですか? TypeScript(tsconfig.jsonおよびtypings.json)の構成方法

編集:Aleksey L。David Bohunek のおかげで、rx-node.d.tsこのように見える

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

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

@ reactivex/rxjs をインストールしました

npm install --save @reactivex/rxjs

エラーが出たので

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

tsconfig.jsonのターゲットをes6に変更しました。

32
maiermic

注意してください、これは typings を使用して定義を管理することに関する古い質問(2016)であり、 npm


typings.jsonにカスタム定義を追加できます。たとえば、次のフォルダー構造がある場合:

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

ここで、rx-node.d.tsはカスタムタイピングファイルです。例えば:

declare module RxNode {
    export interface ...
}

次に、コマンドでインストールします

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

または手動で:typings.jsonでこのタイピングファイルへの参照を追加します。

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

そして、typings install

33
Aleksey L.

rx-node.d.tsという名前の新しいファイルを作成し、tsconfig.jsonで直接または別のファイル(typings/index.d.tsなど)から参照されていることを確認します。次に、このようなものから始めることができます:

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

declare namespace RxNode  {

    export interface Emitter<T>{

    }

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

この質問/回答は役に立つかもしれません: 既存の.jsファイルからd.tsファイルを書く方法?

質の高いタイピング定義ファイルを作成する場合は、 https://github.com/DefinitelyTyped/DefinitelyTyped に貢献してください

1
David Bohunek