Puppeteer/Typescript: كيف يمكنني التحويل إلى عنصر في دالة eval الخاصة بالصفحة؟


أحاول قراءة قيمة صفة في بوبتير:

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

مما يؤدي إلى

خطأ TS2339: الخاصية 'getAttribute' غير موجودة على النوع 'Element'.

عندما ألقي

العقدة: أي

بدلاً من node: Element، إنه يعمل بشكل جيد.

يبدو أن سبب ذلك هو أن React يحمّل النوع فوق طاقته

واجهة Element { }

في node_modules/@types/react/gloabal.d.ts

كيف يمكنني التحويل إلى العنصر القياسي؟

الإجابة رقم 1

قد تكون مفقودًا مكتبة dom من ملف tsconfig.json الخاص بك. أضفها كما يلي:

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

إذا لم يساعد إضافة المكتبة، حاول إعلان الطريقة المطلوبة بشكل صريح باستخدام دمج التصريحات:

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

بهذا يمكنك توسيع أي نوع كما تشاء.