عند استخدام super()
في TypeScript لاستدعاء ال constructor من الفئة الأساسية، يجب عليك تمرير المعلمات المطلوبة لل constructor الأساسي. في هذه الحالة، constructor في فئة Artist
يتطلب أربع معاملات: name
و age
و style
و location
. لذلك، عند استخدام super()
في فئة StreetArtist
، يجب عليك تمرير هذه المعاملات.
هناك عدة طرق للقيام بذلك. يمكنك إما تعديل constructor في StreetArtist
لتمرير المعاملات المطلوبة إلى super()
كما هو موضح في المثال التالي:
typescriptclass 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
كما هو موضح في المثال التالي:
typescriptclass 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:
-
super()
يجب أن يكون الاستدعاء الأول في constructor في الفئة المشتقة. وهذا يعني أنه يجب أن يكون في السطر الأول من constructor. -
إذا كان constructor في الفئة المشتقة لا يحتوي على أي استدعاء ل
super()
، سيتم ضمنياً استدعاءsuper()
بدون معاملات. -
عند استخدام
super()
، يجب تمرير المعاملات المطلوبة ل constructor في الفئة الأساسية. إذا تم تعريف constructor في الفئة الأساسية بحيث يأخذ معاملات اختيارية، يمكنك تمرير فقط المعاملات التي تحتاجها. -
إذا كنت بحاجة إلى تمرير معاملات ل
super()
في constructor الفئة المشتقة وكذلك القيام بعمليات إضافية، يمكنك تنفيذ العمليات الإضافية بعد استدعاءsuper()
. -
يمكنك استخدام
super
أيضًا للوصول إلى الخصائص والأساليب الموروثة من الفئة الأساسية. على سبيل المثال، يمكنك استدعاء أساليب موروثة منsuper
داخل أساليب في الفئة المشتقة.
هذه هي الأساسيات الرئيسية لاستخدام super()
في TypeScript. إذا كان لديك أي أسئلة أو استفسارات أخرى، فلا تتردد في طرحها.