TS2339:类型“元素”上不存在属性“样式”?

pra*_*olu 1 javascript typescript angular

这是代码:

ngOnInit() {
const navSlide = () => {
  const burger = document.querySelector('.burger');
  const nav = document.querySelector('.nav-links');
  const navLinks = document.querySelectorAll('.nav-links li');
  burger.addEventListener('click', () => {
    nav.classList.toggle('nav-active');
  });
  navLinks.forEach((link, index) => {
  link.style.animation = `navLinkFade 0.5s ease forwards ${index / 7 + 0.3}s`;
   });
};
navSlide();
Run Code Online (Sandbox Code Playgroud)

}

编译时出现错误:

Property 'style' does not exist on type 'Element'.ts(2339)
Run Code Online (Sandbox Code Playgroud)

我该如何修复它?

T.J*_*der 10

querySelectorAll返回NodeList已知包含Elements,但不明确包含HTMLElements。在您的情况下,您知道这些是HTMLElements(特别是HTMLLIElements),因此您可以使用类型断言来表示:

navLinks.forEach((link, index) => {
    (link as HTMLElement).style.animation = `navLinkFade 0.5s ease forwards ${index / 7 + 0.3}s`;
});
Run Code Online (Sandbox Code Playgroud)

但请参阅Mike S. 的评论- 我不使用 Angular,但听起来这里有一个更特定于 Angular 的解决方案。