运行代码时:
public onResize(event: Event) {
console.log(event.target.innerWidth);
//--solution--
//var w = event.target as Window;
//console.log(w.innerWidth);
}
我收到一个错误:
Property innerWidth does not exist on type EventTarget
我想避免在TypeScript中扩展类型(如此处Property 'value' does not exist on type 'EventTarget'所述),因此我将event.target
转换为Window
类。我不确定是否要上适当的课。我应该选哪个班?如何找出应该投给的适当班级?
答案 0 :(得分:6)
调整大小事件使用 UIEvent 接口。
https://developer.mozilla.org/en-US/docs/Web/API/Window/resize_event
一个UIEvent具有一个目标属性,不幸的是,它没有“ innerWidth”属性。因此,我们将事件 的 target 声明为Window
即
window.addEventListener('resize', (event: UIEvent) => {
const w = event.target as Window;
console.log(w.innerWidth) // works!
});
答案 1 :(得分:2)
如果您知道将事件侦听器注册在哪个元素上,则可以将event.target
强制转换为该元素类型。我认为没有什么比这更多的了。另外,您可以直接引用您在其上注册了侦听器的元素(在本例中为全局window
),而不必使用event.target
。