البرمجة

استخدام super() في TypeScript

عند استخدام super() في TypeScript لاستدعاء ال constructor من الفئة الأساسية، يجب عليك تمرير المعلمات المطلوبة لل constructor الأساسي. في هذه الحالة، constructor في فئة Artist يتطلب أربع معاملات: name و age و style و location. لذلك، عند استخدام super() في فئة StreetArtist، يجب عليك تمرير هذه المعاملات.

هناك عدة طرق للقيام بذلك. يمكنك إما تعديل constructor في StreetArtist لتمرير المعاملات المطلوبة إلى super() كما هو موضح في المثال التالي:

typescript
class StreetArtist extends Artist { constructor( public medium: string, public famous: boolean, public arrested: boolean, public art: Artist, name: string, // إضافة المعاملات المطلوبة لل constructor في الفئة الأساسية age: number, style: string, location: string ){ super(name, age, style, location); // استدعاء constructor في الفئة الأساسية مع المعاملات المطلوبة console.log(`instantiated ${this.name}. Are they famous? ${famous}. Are they locked up? ${arrested}`); } }

أو يمكنك تعديل constructor في Artist لجعل بعض المعاملات اختيارية، مما يسمح لك بتمرير فقط المعاملات التي تحتاجها في StreetArtist كما هو موضح في المثال التالي:

typescript
class Artist { constructor( public name?: string, // جعل المعاملات اختيارية public age?: number, public style?: string, public location?: string ){ if (name) { // التحقق من وجود المعامل قبل استخدامه console.log(`instantiated ${name}, whom is ${age} old, from ${location}, and heavily regarded in the ${style} community`); } } } class StreetArtist extends Artist { constructor( public medium: string, public famous: boolean, public arrested: boolean, public art: Artist ){ super(); // يمكنك تمرير فقط المعاملات التي تحتاجها هنا console.log(`instantiated ${this.name}. Are they famous? ${famous}. Are they locked up? ${arrested}`); } }

يرجى ملاحظة أنه في المثال الثاني، قمت بتعديل constructor في Artist لجعل المعاملات اختيارية، ولذلك يجب عليك التحقق من وجود المعامل قبل استخدامه داخل constructor.

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

بالتأكيد، إليك المزيد من المعلومات حول استخدام super() في TypeScript:

  1. super() يجب أن يكون الاستدعاء الأول في constructor في الفئة المشتقة. وهذا يعني أنه يجب أن يكون في السطر الأول من constructor.

  2. إذا كان constructor في الفئة المشتقة لا يحتوي على أي استدعاء ل super()، سيتم ضمنياً استدعاء super() بدون معاملات.

  3. عند استخدام super()، يجب تمرير المعاملات المطلوبة ل constructor في الفئة الأساسية. إذا تم تعريف constructor في الفئة الأساسية بحيث يأخذ معاملات اختيارية، يمكنك تمرير فقط المعاملات التي تحتاجها.

  4. إذا كنت بحاجة إلى تمرير معاملات ل super() في constructor الفئة المشتقة وكذلك القيام بعمليات إضافية، يمكنك تنفيذ العمليات الإضافية بعد استدعاء super().

  5. يمكنك استخدام super أيضًا للوصول إلى الخصائص والأساليب الموروثة من الفئة الأساسية. على سبيل المثال، يمكنك استدعاء أساليب موروثة من super داخل أساليب في الفئة المشتقة.

هذه هي الأساسيات الرئيسية لاستخدام super() في TypeScript. إذا كان لديك أي أسئلة أو استفسارات أخرى، فلا تتردد في طرحها.

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