0Pricing
TypeScript Academy · درس

تطبيق الواجهات باستخدام الفئات

أَلزموا الفئة ببنية محددة باستخدام الكلمة المفتاحية implements

تطبيق الواجهات باستخدام الفئات درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

مرحبًا

تضمن الكلمة المفتاحية `implements` أن يفي الصنف بعقد واجهة. ويتحقق TypeScript من أن الصنف يوفر جميع الخصائص والأساليب المطلوبة.

الاستخدام الأساسي لـ implements

استخدم `implements InterfaceName` بعد اسم الصنف. ويصدر TypeScript خطأً إذا كان أي عضو مطلوب مفقودًا.
interface Printable {
  print(): void;
}
class Document implements Printable {
  print() { console.log('Printing...'); }
}

تؤدي الأعضاء المفقودة إلى أخطاء

إذا لم يطبّق الصنف جميع الأعضاء المطلوبة، يُصدر TypeScript خطأً عند تصريح الصنف.
interface Serializable { serialize(): string; }
// Error: Class 'Broken' incorrectly implements interface 'Serializable'
// class Broken implements Serializable {}

تطبيق واجهات متعددة

يمكن للصنف تطبيق عدة واجهات في الوقت نفسه، وذلك بفصل أسمائها بفواصل.
interface Flyable { fly(): void; }
interface Swimmable { swim(): void; }
class Duck implements Flyable, Swimmable {
  fly() { console.log('Flying'); }
  swim() { console.log('Swimming'); }
}

لا توفر interface تطبيقًا

تصف الواجهات البنية فقط، أما الصنف فيوفر التطبيق الفعلي.

استخدام implements مع الأعضاء الاختيارية

لا يلزم تطبيق أعضاء الواجهة الاختيارية. ويمكن للصنف توفيرها، لكنه غير مطالب بذلك.
interface Logger {
  log(msg: string): void;
  warn?(msg: string): void; // optional
}
class SimpleLogger implements Logger {
  log(msg: string) { console.log(msg); }
  // warn is not required
}

استخدام الواجهة لحقن التبعيات

يتيح استخدام الواجهات بوصفها أنواعًا لمعاملات الباني حقن التبعيات؛ إذ يمكنك تمرير أي صنف يطبّق الواجهة.
interface Storage { save(data: string): void; }
class Service {
  constructor(private storage: Storage) {}
  run() { this.storage.save('data'); }
}
class LocalStorage implements Storage {
  save(data: string) { localStorage.setItem('key', data); }
}

المقارنة بين extends وimplements

يُورّث `extends` من صنف آخر، مع مشاركة التطبيق. أما `implements` فلا يتحقق إلا من البنية؛ ولا يُورث أي تعليمات برمجية.

صنف يطبّق واجهة ويمدّد صنفًا

يمكن للصنف أن يمدّد صنفًا أساسيًا وأن يطبّق واجهات في الوقت نفسه.
class Animal { breathe() { return 'breathing'; } }
interface Trainable { train(): void; }
class Dog extends Animal implements Trainable {
  train() { console.log('Sit!'); }
}

تطبيقات الواجهات العامة

يمكن للصنف تطبيق واجهة عامة من خلال توفير وسيطة النوع.
interface Repository<T> {
  findById(id: number): T | null;
}
class UserRepo implements Repository<User> {
  findById(id: number): User | null {
    return null; // stub
  }
}

أمان الأنواع في implements

لا يضيف `implements` أي سلوك وقت التشغيل. ولا يعرف الصنف شيئًا عن الواجهة وقت التشغيل؛ فهو عقد يُفرض في وقت الترجمة فقط.

تحقّق سريع

ما الذي يتحقق منه TypeScript عندما يستخدم صنف الكلمة المفتاحية `implements`؟

مراجعة

يفرض `implements` وفاء الصنف بعقد واجهة في وقت الترجمة. ويمكن للصنف تطبيق عدة واجهات. استخدم الواجهات لحقن التبعيات، وقابلية الاختبار، وفصل السلوك عن التطبيق.

الأسئلة الشائعة

هل درس «تطبيق الواجهات باستخدام الفئات» مجاني؟

نعم — نص درس «تطبيق الواجهات باستخدام الفئات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «تطبيق الواجهات باستخدام الفئات»؟

أَلزموا الفئة ببنية محددة باستخدام الكلمة المفتاحية implements تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟

لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تطبيق الواجهات باستخدام الفئات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟

نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. فئات TypeScript والمنشئات
  2. معدّلات public وprivate وprotected
  3. خصائص readonly وخصائص المعاملات
  4. تطبيق الواجهات باستخدام الفئات
← العودة إلى TypeScript Academy