Puppeteer/Typescript: Bagaimana saya boleh menukar kepada Elemen dalam fungsi eval$halaman?
Saya cuba membaca nilai atribut dalam puppeteer:
const value = attribute && await page.$eval(selector, (node: Element, name: string) => {
return node.getAttribute(name)
}, attribute.name);
yang mengakibatkan
ralat TS2339: Sifat 'getAttribute' tidak wujud pada jenis 'Element'.
Apabila saya membuang
node: apa-apa
daripada node: Elemen, ia berfungsi dengan baik.
Sebab untuk ini nampaknya kerana React membebankan jenis itu sebagai
antara muka Elemen { }
dalam node_modules/@types/react/gloabal.d.ts
Bagaimana saya boleh menukar kepada Elemen standard?
Jawapan #1
Anda mungkin kehilangan perpustakaan dom dari tsconfig.json anda. Tambahkannya seperti berikut:
"lib": [
"dom",
"es2018"
],
Jika menambah pustaka tidak membantu, cuba isytiharkan kaedah yang diperlukan secara eksplisit dengan penggabungan deklarasi:
interface Element {
getAttribute(name: string): string;
}
Dengan itu anda boleh memanjangkan jenis sewenang-wenangnya seperti yang anda suka.
