البرمجة

حل مشكلة TypeScript: تجنب خطأ ‘Cannot set property’ مع الواجهات

في سياق لغة TypeScript، يظهر الخطأ “Cannot set property ‘first’ of undefined” عند محاولة تعيين قيمة لخاصية first في الكائن name الذي لم يتم تعيين قيمة له بعد. في الشيفرة المرفقة، يظهر أن الكائن name هو من نوع Name ويتم إعلانه في الفئة Person، ولكنه لم يتم تهيئته بقيمة ابتدائية. لحل هذا الخطأ، يجب تهيئة الكائن name بقيمة مناسبة قبل محاولة الوصول إلى خاصيته.

يمكن تحقيق ذلك عبر تعديل الطريقة setName في الفئة Person لتهيئة الكائن name قبل تعيين قيمة لخاصياته. إليك الشيفرة المعدلة:

typescript
interface Name { first: string; last: string; } class Person { private name: Name; constructor() { // تهيئة الكائن name عند إنشاء الكائن من الفئة this.name = { first: '', last: '' }; } public setName(firstName: string, lastName: string) { // تعيين قيم الخصائص this.name.first = firstName; this.name.last = lastName; } } var person1 = new Person(); person1.setName('Tracy', 'Herrera');

في هذا التعديل، تم إضافة ميثود constructor إلى الفئة Person لضمان تهيئة الكائن name عند إنشاء الكائن. هذا يحل المشكلة التي تسببت في ظهور الخطأ، وبالتالي يتيح لك تعيين قيم للخصائص بدون أي مشاكل.

المزيد من المعلومات

في تطوير البرمجيات باستخدام TypeScript، يتم استخدام الواجهات (Interfaces) لتحديد هياكل البيانات وأنواع الكائنات. في الشيفرة المقدمة، تم تعريف واجهة Name لتحديد تركيبة الكائن الذي يحتوي على الخصائص first و last من النوع string.

علاوة على ذلك، تم إنشاء فئة Person التي تحتوي على خصوصية name من نوع الواجهة Name. يتم تعيين قيم لهذه الخصائص من خلال استخدام الطريقة setName، ولكن كان من الضروري تهيئة الكائن name قبل الوصول إليه.

مع إضافة ميثود constructor، يمكننا التحكم في تهيئة الكائن عند إنشاء كائن من الفئة Person. هذا يعزز استدعاء الطريقة setName بدون حدوث أخطاء ذات صلة بقيم الكائن غير المهيأة.

بشكل عام، يجب دائمًا تأكيد تهيئة الكائنات قبل الوصول إليها لتجنب الأخطاء المتعلقة بالقيم الفارغة أو غير المهيأة. في السياق الخاص بـ TypeScript، هذا يلعب دورًا هامًا في تحسين الكود وجعله أكثر دقة واستقراراً.

زر الذهاب إلى الأعلى