错误TS:类型“元素”上不存在属性“数据集”

时间:2020-03-02 09:34:55

标签: 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”}

您是否知道如何消除此错误?我猜这是一个打字稿错误,但在显示时以及如何避免它时我找不到任何原因。

先谢谢您。

1 个答案:

答案 0 :(得分:4)

属性dataset在类型Element上不存在,但在HTMLElement上存在。在继续操作之前,您需要确保它属于这种类型。它还可以稍微调整一下for循环:

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