MegaMuetzenMike MegaMuetzenMike - 6 months ago 726
Node.js Question

TypeScript: How to define custom typings for installed npm package?

I like to use rx-node within TypeScript

import RxNode from 'rx-node';


I installed rx-node using npm

$ npm install rx-node --save


I searched for type definitions, but without any result

$ typings search rx-node
No results found for search


How can I define custom type definitions for the installed npm module rx-node? Where should I store the type definition file? How to configure TypeScript (tsconfig.json and typings.json)?

Edit: Thanks to Aleksey L. and David Bohunek I achieved to define a
rx-node.d.ts
that looks like this

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

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


I installed @reactivex/rxjs

npm install --save @reactivex/rxjs


Since I got an error

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


I changed the target in tsconfig.json to
es6
.

Answer

You can add custom definitions to typings.json. For example having following folder structure:

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

where rx-node.d.ts is your custom typings file. For example:

declare module RxNode {
    export interface ...
}

Then in typings.json add reference to this typings file:

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

And run typings install

Comments