Puppeteer/Typescript: Cum pot face casting la Element într-o funcție eval$a paginii?
Încerc să citesc valoarea unui atribut în puppeteer:
const value = attribute && await page.$eval(selector, (node: Element, name: string) => {
return node.getAttribute(name)
}, attribute.name);
ceea ce duce la
eroare TS2339: Proprietatea 'getAttribute' nu există pe tipul 'Element'.
Când arunc
nod: orice
în loc de node: Element, funcționează bine.
Motivul pentru aceasta pare să fie că React suprasolicită tipul ca
interfață Element { }
în node_modules/@types/react/gloabal.d.ts
Cum pot să fac conversia la Elementul standard?
Răspuns #1
Este posibil să lipsească biblioteca dom din fișierul tău tsconfig.json. Adaug-o astfel:
"lib": [
"dom",
"es2018"
],
Dacă adăugarea bibliotecii nu ajută, încearcă să declari metoda necesară explicit prin combinarea declarațiilor:
interface Element {
getAttribute(name: string): string;
}
Cu asta poți extinde orice tip după cum dorești.
