اذهب إلى المحتوى

السؤال

نشر

في لغات البرمجة المعروفة يمكن عمل صنف مجرد  abstract class بحيث يُستخدم في الوراثة ولا يمكن عمل نسخ جديدة منه instances، وحاولت أن أقوم بعمل صنف مجرد في JavaScript بأكثر من طريقة ولكن لم أنجح.

هل تدعم لغة JavaScript عمل أصناف مجردة من الأساس أم لا؟

Recommended Posts

  • 1
نشر

في إصدار جافاسكريبت ECMAScript 2015 (المعروفة بـ ES6) تم دعم صيغة الصنف class-syntax لعمل أصناف جديدة ولكن لم يتم تقديم أي صيغة لعمل أصناف مجردة، ولكن بالرغم من ذلك إلا أنه يمكن عمل أصناف مجرد بمساعدة الكلمة المفتاحية new على النحو التالي:

class AbstractUser {
   constructor () {
      if (new.target === AbstractUser) throw TypeError("Cannot instantiate abstract class AbstractUser");
   }
}

وفي الدالة البانية يمكن إستخدام نفس الطريقة كما يلي:

function AbstractUser() {
    if (this.constructor === AbstractUser) throw new Error("Cannot instantiate abstract class AbstractUser");
}

وعند محاولة عمل نسخة جديدة من الصنف AbstractUser سيظهر خطأ:

new AbstractUser();	// Error: Uncaught TypeError: Cannot instantiate abstract class AbstractUser

في حالة كنت تستعمل TypeScript فيمكنك عمل صنف مجرد abstract class بشكل بسيط مثل أغلب لغات البرمجة المعروفة من خلال الكلمة المفتاحية abstract على النحو التالي:

abstract class AbstractUser {
    name: string;
    
    constructor(name: string) {
        this.name = name;
    }

}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...