gpt4 book ai didi

typescript - 如何从 Typescript 中的另一个 "plugin"模块扩充模块

转载 作者:搜寻专家 更新时间:2023-10-30 21:40:39 26 4
gpt4 key购买 nike

如果我输入一个名为“foo”的模块,就像这样:

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

namespace foo {}

function foo(): App;

export = foo;
}

当导入另一个名为 foo-plugin 的模块时,如何向 App 接口(interface)添加新属性?

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

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

如果我将 App 接口(interface)设为顶层,则声明会合并,但无需导入 foo-plugin

这就是 chai-as-promised 和 sinon-chai 的情况。这段代码可以编译,但当然会抛出异常,因为 eventually 是未定义的。它是某种类型的 Typescript 限制并且必须接受吗?

import { expect } from 'chai';

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

谢谢..

最佳答案

在这里查看 example with axios

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

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

Declaration Merging on TypeScript docs

关于typescript - 如何从 Typescript 中的另一个 "plugin"模块扩充模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41535551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com