Использовать тип из модуля в расширении пространства имен - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь использовать расширение типов Typescript для расширения тестовой среды, то есть класса Mocha Context, так что я могу сделать:

beforeEach(function() {
    this.myMethod();
});

Восходящие типы использовать пространство имен поэтому исправление прототипа и добавление файла .d.ts выглядит следующим образом:

declare namespace Mocha {
    interface Context {
        myMethod(): string;
    }
}

Проблемы начинаются, когда я пытаюсь использовать другие типы с дополнением.

Моя база кода написано с модулями и, скажем, у меня есть такой модуль:

export interface MyType {
//...
}

Как только любой импорт используется в расширении пространства имен, он перестает работать.

Как я могу использовать MyType в подписи myMethod?

Я полагаю, что нечто подобное немыслимо и может быть использовано, возможно, для модернизации поддержки Moment для библиотеки, которая работает только с датой, или аналогичной.

1 Ответ

0 голосов
/ 15 января 2020

Видимо, проходя пространство имен global, добивается цели:

import { MyType } from "../src/MyType";

declare global {
    namespace Mocha {
        export interface Context {
            myMethod(): MyType;
        }
    }
}

...