تحديث TypeScript: حل مشكلة Property ‘x’ does not exist on type ‘Y’
الخطأ الذي تحصل عليه يحدث لأن TypeScript يفترض أن الخصائص التي تقوم بالوصول إليها باستخدام النقطة (images.main
في حالتك) يجب أن تكون معرفة مسبقاً في نوع البيانات الذي تم تحديده (في هذه الحالة Images
). في الواقع، TypeScript لا يعرف ما إذا كانت الخاصية ‘main’ موجودة أم لا، لأن الفهرس الذي تعرفه ([key: string]: string;
) يسمح بأي مفتاح من نوع string وليس فقط ‘main’.
لحل هذه المشكلة دون الحاجة لاستخدام الفهرس مباشرة، يمكنك استخدام نوع مخصص للصورة الرئيسية بدلاً من استخدام فهرس. على سبيل المثال:
-
فهم مفهوم lvalue و rvalue08/03/2024
typescriptinterface Images {
main: string;
[key: string]: string;
}
function getMainImageUrl(images: Images): string {
return images.main;
}
في هذا الشكل، تقوم بتعريف الخاصية ‘main’ بشكل صريح كجزء من نوع Images
، وبالتالي TypeScript سيكون على علم بوجود هذه الخاصية دون إعطاء خطأ.
المزيد من المعلومات
تأكد من تحديث نسخة TypeScript إلى أحدث إصدار ممكن، حيث قد تكون هذه المشكلة قديمة وتم حلها في الإصدارات الأحدث. قم بتحديث TypeScript إلى الإصدار الأخير باستخدام npm (Node Package Manager) باستخدام الأمر التالي:
npm install -g typescript
بعد التحديث، قم بتشغيل ملف TypeScript الخاص بك مرة أخرى وتحقق مما إذا كانت المشكلة قد حُلت.
إذا استمرت المشكلة، يمكنك استخدام الفهرس مع اتخاذ بعض التدابير الاحترازية للتأكد من عدم وجود أخطاء في تشغيل البرنامج، على سبيل المثال:
typescriptfunction getMainImageUrl(images: Images): string {
return images && images.main ? images.main : '';
}
هذا التغيير يتحقق من وجود الكائن images
والخاصية main
قبل الوصول إليها، وإذا كانت غير موجودة، يتم إرجاع سلسلة فارغة.