0Pricing
TypeScript Academy · درس

معدّلات public وprivate وprotected

تحكّموا في الوصول إلى أعضاء الفئة باستخدام المعدّلات

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

مرحبًا

تتحكم معدِّلات الوصول في TypeScript في مستوى رؤية أعضاء الصنف. وهي تساعد على فرض التغليف ومنع الاستخدام غير المقصود.

public: يمكن الوصول إليه من كل مكان

يُعد public هو الإعداد الافتراضي. ويمكن الوصول إلى الأعضاء العامة من أي مكان: داخل الصنف، ومن الأصناف الفرعية، ومن التعليمات البرمجية الخارجية.
class Car {
  public brand: string;
  constructor(brand: string) { this.brand = brand; }
}
const c = new Car('Toyota');
console.log(c.brand); // OK

private: الوصول من الصنف فقط

لا يمكن الوصول إلى الأعضاء الخاصة إلا داخل الصنف الذي يصرّح عنها. ولا تستطيع الأصناف الفرعية أو التعليمات البرمجية الخارجية الوصول إليها.
class BankAccount {
  private balance: number = 0;
  deposit(n: number) { this.balance += n; }
}
const a = new BankAccount();
// a.balance; // Error!

protected: الوصول من الصنف والصنف الفرعي

يمكن الوصول إلى الأعضاء المحمية داخل الصنف الذي يصرّح عنها ومن أي صنف فرعي، لكن لا يمكن الوصول إليها من التعليمات البرمجية الخارجية.
class Animal {
  protected name: string;
  constructor(name: string) { this.name = name; }
}
class Dog extends Animal {
  bark() { console.log(this.name + ' says woof!'); } // OK
}

فرض القيود في وقت الترجمة فقط

تتحقق معدِّلات الوصول في TypeScript في وقت الترجمة فقط. ويظل الناتج JavaScript متضمنًا خصائص عامة؛ فلا يوجد فرض للقيود وقت التشغيل.

الخصوصية الأصلية في JavaScript باستخدام #

يوفر JavaScript حقولًا خاصة أصلية باستخدام `#`، ويُفرض هذا النطاق الخاص وقت التشغيل. ويدعم TypeScript هذه الصياغة إلى جانب كلمته المفتاحية `private`.
class Counter {
  #count = 0; // runtime private (JavaScript)
  increment() { this.#count++; }
  get value() { return this.#count; }
}

معدِّل readonly

لا يمكن تعيين خصائص readonly إلا أثناء الإنشاء. ولا يمكن تغييرها بعد التهيئة.
class User {
  readonly id: number;
  constructor(id: number) { this.id = id; }
}
const u = new User(1);
// u.id = 2; // Error!

دمج المعدِّلات

يمكنك دمج معدِّلات الوصول مع readonly في الخاصية نفسها.
class Config {
  constructor(
    public readonly host: string,
    private readonly port: number
  ) {}
}

private في الباني

يمنع جعل الباني private إنشاء مثيلات من خارج الصنف. استخدم أساليب مصنع static بدلًا من ذلك.
class Singleton {
  private static instance: Singleton;
  private constructor() {}
  static getInstance(): Singleton {
    return this.instance ??= new Singleton();
  }
}

الباني protected

يمنع الباني المحمي إنشاء المثيلات مباشرةً، لكنه يتيح للأصناف الفرعية استدعاءه عبر super().
class Base {
  protected constructor(public id: number) {}
}
class Derived extends Base {
  constructor(id: number) { super(id); }
}

لا تضيف معدِّلات الوصول تكلفة وقت التشغيل

بما أن TypeScript يزيل جميع معلومات الأنواع، فلا تؤثر معدِّلات الوصول إطلاقًا في حجم JavaScript المترجم أو أدائه.

تحقّق سريع

ما معدِّل الوصول الذي يجعل عضو الصنف متاحًا داخل الصنف وفي أصنافه الفرعية، لكن ليس من التعليمات البرمجية الخارجية؟

مراجعة

استخدم public (الإعداد الافتراضي) للأعضاء المتاحة، وprivate للتفاصيل الداخلية المغلّفة، وprotected للأعضاء المخصّصة للأصناف الفرعية. وأضف readonly لمنع التغيير بعد الإنشاء.

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

هل درس «معدّلات public وprivate وprotected» مجاني؟

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

ماذا ستتعلم في «معدّلات public وprivate وprotected»؟

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

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

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

كم من الوقت يستغرق درس «معدّلات public وprivate وprotected»؟

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

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

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

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

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