类型EventTarget上不存在属性innerWidth

ael*_*ael 5 javascript casting typescript

当我运行代码时:

public onResize(event: Event) {
    console.log(event.target.innerWidth);

    //--solution--
    //var w = event.target as Window;
    //console.log(w.innerWidth);
  }
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Property innerWidth does not exist on type EventTarget
Run Code Online (Sandbox Code Playgroud)

我想避免在TypeScript中扩展类型(如此处所述,类型'EventTarget'上不存在属性'value'),所以我将event.target强制转换Window类。我不确定是否要上适当的课。我应该选哪个班?如何找到应上的适当班级?

Bra*_*don 10

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

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

  2. UIEvent 有一个 target 属性,不幸的是,它没有“innerWidth”属性。因此,相反,我们将事件的目标断言为 Window

IE

window.addEventListener('resize', (event: UIEvent) => {
  const w = event.target as Window; 
  console.log(w.innerWidth) // works!
});
Run Code Online (Sandbox Code Playgroud)


Mat*_*hen 1

如果您知道在哪个元素上注册了事件侦听器,那么您可以强制转换event.target为该元素类型。我想没有什么可说的了。或者,您可以直接引用您在其上注册侦听器的元素(在本例中只是全局window),而不是使用event.target