web-dev-qa-db-ja.com

Typescript、 'NodeListOf <Element>' is not a array type or a string type

JSをTS厳密モードに変換する(大きな頭痛の種)

次の構文は私には問題なく見えますが、TSはforallSubMenusループで次のように文句を言っています:

[ts] Type 'NodeListOf<Element>' is not an array type or a string type.

何が足りないの?

function subAct(target:Node){

  const allSubMenus : NodeListOf<Element> = document.querySelectorAll('.subMenuItems') 

  for (const sub of allSubMenus){
    sub.classList.remove('active')
  }  
}
14
Sam

es6を反復可能にするには、targetコンパイラオプションをNodeListOf<T>以上に設定する必要があります。

5
Matt McCutchen

これはTypeScriptサイド解析エラーです。 HTMLCollectionOfで同じ問題が発生しました

それを作るas as、それは私のために働く

  const allSubMenus : NodeListOf<Element> = document.querySelectorAll('.subMenuItems') 

  for (const sub of allSubMenus as any){ // then will pass compiler
    sub.classList.remove('active')
  }  
15
John

あなたは試すことができます

const allSubMenus : NodeListOf<Element> = document.querySelectorAll('.subMenuItems') 
Array.from(allSubMenus).map(subMenu => {/* */})
0
BonjourMonde