Как я могу расширить интерфейс IModule для ng в Typescript? - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь расширить ng.IModule для поддержки регистрации пользовательских компонентов, но это постоянно выдает мне ту же ошибку:

Свойство 'customComponent' не существует для типа 'IModule'.ts (2339)

Вот мой код:

tsconfig.json

{
    "module": "amd",
    ...
    "types": [
        "angular"
    ]
}

Module.ts

export class Module {
    register(module: ng.IModule) {
        module
            .component(SomeComponent, SomeComponent.componentOptions)
            .customComponent("test") <-- this what it doesn't work
       ;
   }
}

ModuleExtension.ts

export declare module ng {
    interface IModule {
        customComponent(testData: string): IModule;
    }
}

ng пространство имен является глобальным.

Я читаю документацию TS, и то, что я пытаюсь достичь, называется Объявление слияние . В C # это называлось методами расширения.

1 Ответ

0 голосов
/ 03 июля 2019

Попробуйте переместить его в файл .d.ts вместо файла .ts. Тогда вы также можете потерять export. Я попытался локально, и это решает проблему, также с ng в качестве глобального пространства имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...