دروس الوحدة (1/2)
الفئات والمعدلات
يقوم TypeScript بتوسيع فئات ES6 القياسية بميزات قوية للبرمجة الموجهة للكائنات (OOP)، مثل الكتابة الثابتة ومعدلات الوصول وخصائص المعلمات المختصرة.
الفئات ومعدلات الوصول
في TypeScript، يمكنك التحكم في رؤية أعضاء الفصل والخصائص والأساليب باستخدام ثلاث كلمات رئيسية:
public(افتراضي): يمكن الوصول إلى العضو من أي مكان.private: يمكن الوصول إلى العضو فقط داخل الفئة التي تحدده.protected: يمكن الوصول إلى العضو داخل الفصل وفئاته الفرعية (الميراث).
class Animal {
public name: string;
private age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
public getAge(): number {
return this.age;
}
}خصائص المعلمة
يقدم TypeScript صيغة مختصرة للإعلان عن عضو الفصل وتهيئته مباشرة في المُنشئ. من خلال إضافة بادئة لمعلمة منشئة مع معدل الوصول، يتم إنشاء الخاصية وتعيينها تلقائيًا:
// This syntax does exactly the same as the previous example!
class Animal {
constructor(
public name: string,
private age: number,
) {}
}تنفيذ واجهات
يمكن للفصل تنفيذ واجهة واحدة أو أكثر باستخدام الكلمة الأساسية implements. وهذا يضمن التزام الفصل بعقد محدد من خلال تحديد جميع الأساليب والخصائص المطلوبة:
interface Flyable {
fly(altitude: number): void;
}
class Bird implements Flyable {
constructor(public name: string) {}
fly(altitude: number): void {
console.log(`${this.name} is flying at ${altitude} meters.`);
}
}الميراث و محمي_INLINE_4
يدعم TypeScript وراثة الفصل بشكل كامل. يمكن للفصل الدراسي توسيع فصل دراسي آخر باستخدام الكلمة الأساسية extends. إذا قامت الفئة الفرعية بتعريف مُنشئ، فيجب عليها استدعاء مُنشئ الفئة الأساسية باستخدام الدالة super() قبل الوصول إلى this:
class Person {
constructor(public name: string) {}
}
class Student extends Person {
constructor(
name: string,
public grade: number,
) {
super(name); // Calls the Person constructor
}
}جربه بنفسك
التمرين 1: فئة السيارة والمعدل الخاص
قم بتعريف فئة تسمى Car. يجب أن تحتوي على خاصية نموذج للقراءة فقط (سلسلة) محددة في المُنشئ، وخاصية عدد الأميال الخاصة (الرقم) التي تمت تهيئتها إلى 0، ومحرك الطريقة العامة (الأميال: الرقم): الفراغ الذي يزيد عدد الأميال بالأميال، و getMileage() getter أو الأسلوب: الرقم الذي يُرجع عدد الأميال.
إظهار التلميح
استخدم الأميال الخاصة: الرقم = 0؛ لجعل المتغير خاصًا ومنشئًا (نموذج عام للقراءة فقط: سلسلة) {} كاختصار.
الحل متاح بعد 3 من المحاولات
التمرين 2: واجهة الشكل وفئة الدائرة
أكمل الكود من خلال تطبيق فئة الدائرة التي تنفذ واجهة الشكل. يجب أن تحتوي الفئة على خاصية (رقم) نصف قطر للقراءة فقط تم تعيينها عبر المُنشئ، وتنفيذ getArea(): number (إرجاع Math.PI * radius * radius).
إظهار التلميح
استخدم شكل الأدوات في فئة الدائرة وحدد طريقة getArea(): number.
الحل متاح بعد 3 من المحاولات
التمرين 3: ملخص فئة المركبات والفئات الفرعية للدراجة النارية
قم بتعريف فئة تسمى "دراجة نارية" تعمل على توسيع فئة المركبة المجردة. يجب أن يطبق طريقة start() لإرجاع السلسلة "Motorcycle" متبوعة بالعلامة التجارية (this.make) و"start".
إظهار التلميح
استخدم فئة Motorcycle لتمديد السيارة وتنفيذ طريقة start (): السلسلة التي تُرجع السلسلة الصحيحة.
الحل متاح بعد 3 من المحاولات
التمرين 4: خصائص المعلمة والوراثة
قم بإنشاء فئة باسم "الموظف" التي تحدد معرف خاصية للقراءة فقط (رقم) واسم خاصية عامة (سلسلة) باستخدام اختصار المنشئ. بعد ذلك، قم بإنشاء فئة مطور تعمل على توسيع الموظف وإضافة قسم (سلسلة) للملكية العامة عبر المُنشئ.
إظهار التلميح
استخدم super(id, name) في مُنشئ المطور واستخدم الإدارة العامة لتعريف الخاصية عبر المُنشئ.
الحل متاح بعد 3 من المحاولات