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;
}
بهذا يمكنك توسيع أي نوع كما تشاء.
