document.readyState的正确类型是什么?解决错误readyState的类型不是EventTarget

时间:2019-06-13 12:42:50

标签: typescript

在页面进入“ complete”状态后,我需要调用函数“ start()”。这是为了确保所有资源都已加载并且页面已加载。问题在于,正如我从找到的示例https://developer.mozilla.org/en-US/docs/Web/API/Document/readyState中编写的那样,TypeScript中无法识别readyState类型。

我试图将代码'event.target.readyState'更改为'(event.target as Document).readyState',该代码允许进行编译,但是从不调用start()函数。

PUTWindow.addEventListener('readystatechange', event=> {
  if (event.target.readyState  === 'interactive') {
    initLoader();
  }
  else if (event.target.readyState === 'complete') {
    let bodyEl: HTMLElement = PUTWindow.document.body;
    start(PUTWindow);
  }
});

这将导致以下错误消息指向readyState “类型'EventTarget'.ts(2339)上不存在属性'readyState'。”

1 个答案:

答案 0 :(得分:0)

您需要将event.target的类型缩小到具有readyState的类型,或者只对元素使用this

PUTWindow.addEventListener('readystatechange', function(event) {
  if (this.readyState  === 'interactive') {
    initLoader();
  }
});