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

Я люблю использоватьгх-узел внутри TypeScript

import RxNode from 'rx-node';

Я установилгх-узел используя нпм

$ npm install rx-node --save

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

$ typings search rx-node
No results found for search

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

Редактировать: БлагодаряАлексей Л. а такжеДэвид Богунек Я достиг, чтобы определить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.

Ответы на вопрос(2)

Создайте новый файл с именем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?

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

 maiermic05 июн. 2016 г., 17:48
Отлично, уже естьтянуть запрос : D
Решение Вопроса

Вы можете добавить пользовательские определения в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

 maiermic05 июн. 2016 г., 17:16
Бегtypings install копииtypings/custom/rx-node.d.ts вtypings/globals/rx-node/index.d.ts, Если я изменю определение типа, я должен запуститьtypings install еще раз, чтобы скопировать изменения. В чем преимущество этого подхода перед ссылкамиrx-node.d.ts вручную вindex.d.ts?
 Aleksey L.19 нояб. 2016 г., 08:09
@ Скорблю, да и нет. Вы все еще можете использоватьтипизации с TS 2. Если вы решите перейти к@types - Пользовательские локальные наборы могут быть включены с"typeRoots" опция компилятора (в случае, если вы хотите хранить их отдельно от других источников)
 Squiggle18 нояб. 2016 г., 12:37
Я предполагаю, что этот подход теперь изменился с TypeScript 2.x, так какtypings папка избыточна, и все наборы установлены через npm в node_modules / @ types / ...? Есть ли рекомендуемый подход для пользовательских типов для отсутствующих определений?
 Aleksey L.05 июн. 2016 г., 17:24
Лично я предпочитаю не редактировать автоматически сгенерированные файлы (и добавить правило игнорирования в системе контроля версий). Также после определения типов они не изменятся, пока не будет изменена исходная библиотека. И как только появится «официальная» версия, ее можно легко заменить.

Ваш ответ на вопрос