我试图在单元测试中使用new Touch({ identifier: Date.now(), target: elem, clientX: x })
,但是TypeScript抱怨error 2554: Expected 0 arguments, but got 1
。
TS的最新版本具有适用于Touch的正确定义:
declare var Touch: {
prototype: Touch;
new(touchInitDict: TouchInit): Touch;
};
但是我们的项目仍在使用2.9.2版本,该版本的定义不正确:
declare var Touch: {
prototype: Touch;
new(): Touch;
};
我该如何解决?
答案 0 :(得分:1)
您可以将constructor
强制转换为任何一种,以解决此问题:
new (Touch as any)({ identifier: Date.now(), target: elem, clientX: x })
或为其别名
const Touch2:any = Touch;
new Touch2({ identifier: Date.now(), target: elem, clientX: x })
或者,您可以为该别名添加正确的类型(首选)
interface Touch3Interface {
prototype: Touch;
new(touchInitDict: TouchInit): Touch;
}
const Touch3:Touch3Interface = Touch as any;
new Touch3({ identifier: Date.now(), target: elem, clientX: x })