Puppeteer/Typescript: چگونه میتوانم در یک تابع eval$ صفحه به یک عنصر تبدیل کنم؟


من سعی میکنم مقدار یک ویژگی را در Puppeteer بخوانم:

const value = attribute && await page.$eval(selector, (node: Element, name: string) => {
    return node.getAttribute(name)
}, attribute.name);

که نتیجه میدهد در

خطا TS2339: ویژگی 'getAttribute' در نوع 'Element' وجود ندارد.

وقتی که من پرتاب میکنم

گره: هر

به جای node: Element، به خوبی کار میکند.

ظاهراً دلیل این امر این است که ریاکت نوع را بهصورت اضافهبار استفاده میکند

رابط Element { }

در node_modules/@types/react/gloabal.d.ts

چگونه میتوانم به المنت استاندارد تبدیل کنم؟

پاسخ شماره ۱

ممکن است کتابخانه dom از tsconfig.json شما کم باشد. آن را به صورت زیر اضافه کنید:

"lib": [
    "dom",
    "es2018"
],

اگر اضافه کردن کتابخانه مفید نبود، سعی کنید متد مورد نیاز را بهطور صریح با ترکیب اعلانها تعریف کنید:

interface Element {
    getAttribute(name: string): string;
}

با این میتوانید نوع دلخواه را همانطور که میخواهید گسترش دهید.