Puppeteer / Typescript:如何在 eval$ 页面函数中转换为 Element?
Puppeteer / Typescript: How can I cast to Element in a eval$ page function?
我尝试在 puppeteer 中读取一个属性的值:
const value = attribute && await page.$eval(selector, (node: Element, name: string) => {
return node.getAttribute(name)
}, attribute.name);
结果是
error TS2339: Property 'getAttribute' does not exist on type 'Element'.
我投的时候
node: any
代替节点:元素,它工作正常。
原因好像是 React 重载了类型 as
interface Element { }
在node_modules/@types/react/gloabal.d.ts
如何投射到标准元素?
您可能缺少 tsconfig.json
中的 dom
库。添加如下:
"lib": [
"dom",
"es2018"
],
如果添加库没有帮助,请尝试使用 declaration merging:
显式声明所需的方法
interface Element {
getAttribute(name: string): string;
}
有了它,您可以根据需要扩展任意类型。
我尝试在 puppeteer 中读取一个属性的值:
const value = attribute && await page.$eval(selector, (node: Element, name: string) => {
return node.getAttribute(name)
}, attribute.name);
结果是
error TS2339: Property 'getAttribute' does not exist on type 'Element'.
我投的时候
node: any
代替节点:元素,它工作正常。
原因好像是 React 重载了类型 as
interface Element { }
在node_modules/@types/react/gloabal.d.ts
如何投射到标准元素?
您可能缺少 tsconfig.json
中的 dom
库。添加如下:
"lib": [
"dom",
"es2018"
],
如果添加库没有帮助,请尝试使用 declaration merging:
显式声明所需的方法interface Element {
getAttribute(name: string): string;
}
有了它,您可以根据需要扩展任意类型。