JSをTS厳密モードに変換する(大きな頭痛の種)
次の構文は私には問題なく見えますが、TSはfor
のallSubMenus
ループで次のように文句を言っています:
[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')
}
}
es6
を反復可能にするには、target
コンパイラオプションをNodeListOf<T>
以上に設定する必要があります。
これは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')
}
あなたは試すことができます
const allSubMenus : NodeListOf<Element> = document.querySelectorAll('.subMenuItems')
Array.from(allSubMenus).map(subMenu => {/* */})