例えば:
// 假设页面上按钮的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();
}
他の取得方法も同様ですが、要するに型アサーションが必要です。