【TS】エラー: プロパティ 'click' がタイプ 'Element' に存在しません

例えば:

// 假设页面上按钮的ID是btn
const btn = document.querySelector('#btn');

// Error: Property 'click' does not exist on type 'Element'.ts(2339)
btn?.click();

解決:

const btn = document.querySelector('#btn') as HTMLElement | null;

btn?.click();

document.querySelector メソッドの戻り結果は Element または null なので、HTMLElement または null を使用しても問題ありませんが、それが配列のようなオブジェクトの場合はどうなるでしょうか。

// querySelectorAll返回NodeList
const btn = document.querySelectorAll('button') as NodeListOf<HTMLButtonElement>;

for (let i = 0; i < btn.length; i++) {
  btn[i].click();
}
// getElementsByClassName返回HTMLCollection
const btn = document.getElementsByClassName('.btn') as HTMLCollectionOf<HTMLElement>;

for (let i = 0; i < btn.length; i++) {
  btn[i].click();
}

他の取得方法も同様ですが、要するに型アサーションが必要です。

おすすめ

転載: blog.csdn.net/weixin_38629529/article/details/127129993