gpt4 book ai didi

angular - 模块扩充错误 :'x' 仅指一种类型,但在此处用作值

转载 作者:行者123 更新时间:2023-12-04 02:04:10 24 4
gpt4 key购买 nike

我对此有些陌生。所以,如果我弄错了,请原谅我。
我试图这样做是为了在 Protractor ElementFinder 类原型(prototype)上定义一个方法。

我在这里遵循合并拉取请求中的语法。 https://github.com/Microsoft/TypeScript/pull/6213

> 1 import { ElementFinder} from "protractor";
> 2
> 3 declare module "protractor" {
> 4 interface ElementFinder {
> 5 doSomething(): void;
> 6 } }
> 7
> 8
> 9 ElementFinder.prototype.doSomething = function (): void {
> 10 console.log("");
> 11 };

我在第 9 行收到此错误

[ts] 'ElementFinder' only refers to a type, but is being used as a value here.



我在这里做错了什么?示例中唯一不同的是,我使用的是来自 npm 的模块,而不是在我的包中定义的模块。难道不能以这种方式扩充模块吗?

最佳答案

看起来像 ElementFinder键入为 interface而不是 class .似乎没有名为 ElementFinder 的导出对象你可以引用得到它的原型(prototype)。 Protractor 给你一个ElementFinder运行时的构造函数?如果是这样,您可以这样输入:

type Constructor<T> = {
new (...args: any[]): T;
readonly prototype: T;
}
declare module "protractor" {
interface ElementFinder {
doSomething(): void;
}
export const ElementFinder: Constructor<ElementFinder>;
}

这应该可以修复类型错误,但要确保确实存在 ElementFinder运行时的构造函数,否则当你运行它时它会爆炸。

关于angular - 模块扩充错误 :'x' 仅指一种类型,但在此处用作值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44823293/

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