如何从Typescript中的另一个“插件”模块扩充模块

时间:2017-01-08 17:25:18

标签: typescript

如果我键入一个名为“foo”的模块,如下所示:

declare module "foo" {
    interface App {
        bar: boolean;
    }

    namespace foo {}

    function foo(): App;

    export = foo;
}

当导入另一个名为App的模块时,如何向foo-plugin界面添加新属性?

declare module "foo-plugin" {
    interface App {
        additional: string;
    }
}

我已尝试过https://www.typescriptlang.org/docs/handbook/declaration-files/templates/module-plugin-d-ts.html中描述的模式,但它不起作用,它只能看到bar属性。

如果我将App界面设置为顶级,则会合并声明,但无需导入foo-plugin

这就是chai-as-promise和sinon-chai所发生的事情。此代码编译但当然会抛出异常,因为eventually未定义。是某种打字稿限制,必须接受吗?

import { expect } from 'chai';

describe('Dummy', () => {
    it('passes', () => {
        expect('foo').to.eventually.equal(5);
    });
});

谢谢..

1 个答案:

答案 0 :(得分:2)

点击此处example with axios

基本上在您的插件上调用它与您要扩展的模块名称相同

declare module "foo" { // foo-plugin
    interface App {
        additional: string;
    }
}

Declaration Merging on TypeScript docs