javascript - 错误 TS : Property 'dataset' does not exists on type 'Element'

标签 javascript angular typescript

在 angular8 环境中编译的过程中,我在终端中遇到了这个错误。
在本地主机上,我浏览页面没有任何问题,控制台中也没有任何错误。
我为已分配该数据集属性的变量创建了一个 console.log,并且它被正确读取。
下面是感兴趣的代码部分:

      let timelineEls = document.querySelectorAll('[data-scroll-timeline]');
  scroll.on("scroll", () => {
    for ( let i = 0; i < timelineEls.length; i++ ) {
      let progress = self.getProgress(timelineEls[i]);
      let timelineKey = timelineEls[i].dataset.scrollTimeline;

      console.log(timelineEls[i].dataset);

      let timeline = timelines[timelineKey]._recent;
      let timeline = timelines[timelineKey];
      let duration = timeline.duration();
      if ( progress > 0 && progress <= 1 ) {
        timeline.seek(progress * duration);
      } else {
        if ( progress <= 0 ) {
          timelines[timelineKey].seek(0);
        } else {
          timelines[timelineKey].seek(duration);
        }
      }
    }
  })

console.log 正确标记:DOMStringMap {scroll: "", scrollTimeline: "albed-anim"}

你知道如何摆脱这个错误吗?我想这是一个 typescript 错误,但在它显示时我找不到任何原因以及如何避免它。

先感谢您。

最佳答案

楼盘dataset类型 Element 上不存在, 但确实存在于 HTMLElement .在继续之前,您需要确保它是这种类型。它还可以稍微调整你的 for 循环:

for (const timelineEl of timelineEls) {
  if (timelineEl instanceof HTMLElement) {
    const progress = self.getProgress(timelineEl);
    const timelineKey = timelineEl.dataset.scrollTimeline;
    // ...
  }
}

关于javascript - 错误 TS : Property 'dataset' does not exists on type 'Element' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60485973/

相关文章:

javascript - 使用 jquery 更改 div 文本

Angular 5 : Event handling for material dropdown

javascript - 将样式组件与 props 和 TypeScript 一起使用

javascript - TypeScript 中的 useParams 不允许解构

browser - 如何在浏览器中编译 TypeScript 代码?

javascript - 错误 : Uncaught (in promise): [object Object]

javascript - Multer req.file.path "Cannot read property ' path' of undefined"

javascript - 导出时是否可以在 SVG 中保存任意数据?

javascript - 文件上传 Angular 2+ 后获取错误 404

typescript :如何在任何地方调用不使用 "this"的变量