TypeScript:如何为已安装的npm包定义自定义类型?

mai*_*mic 32 node.js typescript typescript1.8

我喜欢在TypeScript中使用rx-node

import RxNode from 'rx-node';
Run Code Online (Sandbox Code Playgroud)

我使用npm 安装了rx-node

$ npm install rx-node --save
Run Code Online (Sandbox Code Playgroud)

我搜索了类型定义,但没有任何结果

$ typings search rx-node
No results found for search
Run Code Online (Sandbox Code Playgroud)

如何为已安装的npm模块rx-node定义自定义类型定义?我应该在哪里存储类型定义文件?如何配置TypeScript(tsconfig.jsontypings.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>
}
Run Code Online (Sandbox Code Playgroud)

我安装了@activex/rxjs

npm install --save @reactivex/rxjs
Run Code Online (Sandbox Code Playgroud)

因为我收到了错误

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

我将tsconfig.json中的目标更改es6.

Ale*_* L. 33

您可以向typings.json添加自定义定义.例如,具有以下文件夹结构:

/typings
    /custom
        rx-node.d.ts
    /global
        ...
Run Code Online (Sandbox Code Playgroud)

其中rx-node.d.ts是您的自定义打字文件.例如:

declare module RxNode {
    export interface ...
}
Run Code Online (Sandbox Code Playgroud)

然后使用命令安装

typings install file:typings/custom/rx-node.d.ts --save --global
Run Code Online (Sandbox Code Playgroud)

或者手动:在typings.json中添加对此typing文件的引用:

{
    "name": "TestName",
    "version": false,
    "globalDependencies": {
        "rx-node": "file:typings/custom/rx-node.d.ts"
    }
}
Run Code Online (Sandbox Code Playgroud)

并运行 typings install