TypeScript: как определить пользовательские типы для установленного пакета npm?

мне нравится использовать rx-node в пределах TypeScript

import RxNode from 'rx-node';

Я установил rx-node использование npm

$ npm install rx-node --save

Я искал определения типа, но без какого-либо результата

$ typings search rx-node
No results found for search

как определить пользовательские определения типов для установленного модуля npm rx-node? Где следует хранить файл определения типа? Как настроить TypeScript (tsconfig.в JSON и typings.в JSON)?

Edit: спасибо Л. Алексей и Дэвид 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@reactivexrxjsdistcjsObservable.d.ts (10,66): Cannot find name 'Promise'. (2304)

Я изменил цель в tsconfig.в JSON to es6.

2 ответов


вы можете добавить свои определения для typings.в JSON. Например, имея следующую структуру папок:

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

где rx-узел.d.ts-это ваш пользовательский файл typings. Например:

declare module RxNode {
    export interface ...
}

установить с помощью команды

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

или вручную: в typings.в JSON добавить ссылку на этот файл typings:

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

и работать typings install


создайте новый файл, называемый 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>;
}

этот вопрос/ответ может быть нам: Как написать d.TS файл из существующего .файл js?

Если вам создать красивый, высокое качество typings файл определения, способствовать https://github.com/DefinitelyTyped/DefinitelyTyped