首页 > 解决方案 > document.readyState 的正确类型是什么?解决错误 readyState 不是 EventTarget 类型

问题描述

在页面进入“完成”的就绪状态后,我需要调用函数“start()”。这是为了确保加载所有资源并加载页面。问题是 TypeScript 中无法识别类型 readyState ,因为我从找到的示例中编写了它https://developer.mozilla.org/en-US/docs/Web/API/Document/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'”。

标签: typescript

解决方案


您需要将类型缩小为event.target具有readyState或仅this用于您的元素的类型:

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

推荐阅读