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 windowRun Code Online (Sandbox Code Playgroud)