模块扩充错误:"x"仅指类型,但此处用作值



我对此有些新。所以请问,如果我错了。我想这样做是为了定义量角元素类别原型上的方法。

我正在遵循此处的合并拉请求中的语法。

> 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'仅是指一种类型,但被用作 在这里值。

我在这里做错了什么?示例中唯一不同的是我使用的是来自NPM的模块,而不是我的软件包中定义的模块。是否可以通过这种方式增加模块?

看起来ElementFinderinterface而不是class。似乎没有名为ElementFinder的导出对象您可以参考以获取其原型。量角器会在运行时给您ElementFinder构造函数吗?如果是这样,您可以这样输入:

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

应该修复类型错误,但请确保在运行时实际上有一个ElementFinder构造函数,否则在运行它时会爆炸。

最新更新