我有使用mootools进行转换的遗留代码。 Mootools引入了一个新的构造函数'元素'有两个参数。我没有为mootools找到任何类型定义文件,所以我必须自己编写。
typescript标准库(lib.d.ts)将Element定义如下:
R
这使得无法扩展现有接口。
我显然在尝试的是
var Element: { prototype: Element; new(): Element; };
但是,编译器还是抱怨
interface Element {
new(s: string, s2: any): Element;
}
为var c = new Element('p',{});
。这里的首选解决方法是什么?
mootools构造函数
the contructor expected 0 arguments, but got 2
答案 0 :(得分:1)
您不需要扩展Element
界面,您需要的是扩展Element
变量的类型。这有点令人困惑,这是TS的两个独立实体。以下是如何做到的:
declare const Element: { // If you do that in a .d.ts file, you don't need declare.
prototype: Element; // Element here is interface, we leave it unchanged.
new(): Element; // Standard constructor.
new(s: string, n: number): Element; // Your custom constructor.
};
const e = new Element('1', 2);
e.nodeName; // => string, i.e. result object implements Element interface.