类型EventTarget上不存在属性innerWidth

时间:2018-08-21 19:16:41

标签: javascript typescript casting

运行代码时:

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类。我不确定是否要上适当的课。我应该选哪个班?如何找出应该投给的适当班级?

2 个答案:

答案 0 :(得分:6)

  1. 调整大小事件使用 UIEvent 接口。

    https://developer.mozilla.org/en-US/docs/Web/API/Window/resize_event

  2. 一个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