忽略或覆盖构造函数定义的参数

时间:2019-07-23 21:44:24

标签: typescript dom

我试图在单元测试中使用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;
};

我该如何解决?

1 个答案:

答案 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 })