Изменить модуль с помощью плагинов, когда определение Typescript разделено на несколько файлов

В Typescript 2.2 я пытаюсь определить модуль (HapiJS), который имеет различные параметры плагина.

Я преобразовал основной код в несколько файлов .d.ts, а затем импортировал и реэкспортировал их все из index.d.ts, используя следующий шаблон (как показано здесь):

export * from './hapi/connection';
export * from './hapi/reply';
export * from './hapi/request';
export * from './hapi/response';
export * from './hapi/route';
export * from './hapi/server_views';
export * from './hapi/server';

В отдельном модуле он расширяет их как показано здесь< /а>:

import * as hapi from 'hapi';

declare module 'hapi' {
    interface IFileHandler {
        /** path - a path string or function as described above (required). */
        path: string | IRequestHandler<string>;
        ...
    }

    // Extending hapi core:
    interface IRouteConfiguration {
        file?: string | IRequestHandler<string> | IFileHandler;

Однако, когда я сделал это, все ссылки на IRequestHandler выше ошибки: «Не удается найти имя« IRequestHandler ».». Если весь хапи-код переместить обратно в один гигантский index.d.ts, то он будет работать, как и ожидалось. Есть ли способ добиться этого, используя несколько файлов определения hapi?


person AJP    schedule 07.04.2017    source источник


Ответы (1)


Я не пробовал, но, возможно, можно было бы использовать что-то вроде следующего (хотя я сомневаюсь, что interface hapi.IRouteConfiguration { будет приемлемым):

import * as hapi from 'hapi';

declare module 'hapi' {
    interface IFileHandler {
        /** path - a path string or function as described above (required). */
        path: string | hapi.IRequestHandler<string>;
        ...
    }

    // Extending hapi core:
    interface hapi.IRouteConfiguration {
        file?: string | hapi.IRequestHandler<string> | IFileHandler;';

В качестве альтернативы, возможно, импорт из hapi/server или любой другой части, которая необходима.

person AJP    schedule 10.05.2017