代码:
class MyEvent extends Event {
constructor(name) {
super(name);
}
}
var event = new MyEvent("mousemove");
运行时错误:
未捕获的TypeError:无法构建'事件':请使用' new'运算符,此DOM对象构造函数不能作为函数调用。
有解决方法吗?
答案 0 :(得分:3)
Uncaught TypeError:无法构造'Event':请使用'new'运算符,此DOM对象构造函数不能作为函数调用。
问题在于v8运行时中的Event
定义。它不适用于基于class
的扩展。以前存在同样的错误问题,即以下情况曾经失败过:
class MyError extends Error {
constructor(message) {
super(message);
}
}
const error = new MyError("some message");
所以此刻。 无法扩展TypeScript(或ES6类)中的Event
类。
答案 1 :(得分:0)
Event
未定义为Typescript中的类,因为它是JS对象。在这种情况下你想要的是一个包装类,它以你想要的方式调用Event
的方法。然后,您可以扩展该包装器。
答案 2 :(得分:0)
您可以创建一个静态类,该类将成为事件提供者:
static class EventProvider {
static createEvent(name: string): Event {
return new Event(name);
}
static createCustomEvent<T>(name: string, detail: T): CustomEvent<T> {
return new CustomEvent<T>(name, { detail: detail });
}
}