如果我键入一个名为“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);
});
});
谢谢..
答案 0 :(得分:2)
基本上在您的插件上调用它与您要扩展的模块名称相同
declare module "foo" { // foo-plugin
interface App {
additional: string;
}
}