dispatchEvent导致错误,无法在'EventTarget'上执行'dispatchEvent':参数1不是'Event'类型

ron*_*man 8 javascript typescript angular

我正在使用Angular2 + TypeScript,当我尝试执行此代码时:

var event = new Event('check');
window.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

此代码导致下一个错误:

无法在'EventTarget'上执行'dispatchEvent':参数1不是'Event'类型。

我已经尝试了所有方法,发现可以使用:

var event = new CustomEvent('check');
Run Code Online (Sandbox Code Playgroud)

问题是任何IE不支持CustomEvent。

另一件有效的方法是:

var event = new Event('CustomEvent');
event.initCustomEvent('check');
Run Code Online (Sandbox Code Playgroud)

问题是不赞成使用InitCustomEvent。

我有什么办法可以避免这种类型的错误?也许在打字稿中的某个地方例外?还是使用不被弃用且适用于IE Edge的任何代码?

ron*_*man 10

找到了解决办法。

对于某些 TypeScript 设置,仅当我们插入第二个参数时,new Event才是“Event”类型,如下例:

window.addEventListener('check', e => console.log(e.type))

var event = new Event('check', { bubbles: true, cancelable: false })
document.body.dispatchEvent(event) // event will buble up to window
Run Code Online (Sandbox Code Playgroud)

  • 将其粘贴到 chrome 控制台中,我得到了同样的错误。 (6认同)