البرمجة

فهم الفارق بين @Inject و @Injectable في Angular 2 TypeScript

في Angular 2 و TypeScript، تستخدم الزراعة (Dependency Injection) لإدارة تبادل الاعتمادات بين مكونات التطبيق. تحمل الشكلين @Inject و@Injectable أدوارًا مختلفة في هذا السياق، وهنا سأقوم بتوضيح الاختلاف بينهما.

@Injectable:

عندما تقوم بوضع @Injectable() فوق فئة (Class)، فإنك ببساطة تُشير إلى أن هذه الفئة يمكن استخدامها في عملية الزراعة. بمعنى آخر، يمكنك حقن هذه الفئة في مكونات أخرى. على سبيل المثال، في كودك المرفق، تقوم الفئة Hamburger بالتعبير عن كائن من نوع “همبرغر”، والذي يحتوي بدوره على كائن من نوع Bun كمعتمد عليه.

@Inject:

أما عند استخدام @Inject في مكون آخر، مثل الكود الذي قدمته، يُستخدم لتحديد الاعتماد الذي تريد حقنه. في هذا السياق، يُستخدم @Inject مع تعليمة constructor لتحديد النوع الذي تُريد حقنه. في المثال، تقوم @Inject(Hamburger) بإشارة إلى أنك تريد حقن كائن من نوع Hamburger في المُتغير h الذي يُمثل همبرغر.

ببساطة، يتيح لك @Injectable() تحديد الكلاسات التي يمكن حقنها، بينما يُستخدم @Inject لتحديد الكائن الفعلي الذي سيتم حقنه.

في إجابتي هذه، أحاول أن أوضح بشكل شامل الفارق بين استخدام @Injectable و @Inject في Angular 2 مع TypeScript. يجدر بك مراجعة كود المثال لفهم أفضل حول كيفية تنفيذ هذه المفاهيم في الواقع وكيف تعمل عملية الزراعة في هذا السياق.

المزيد من المعلومات

بالطبع، دعونا نقوم بتفصيل المزيد حول الفارق بين @Inject و @Injectable في Angular 2 مع TypeScript.

@Injectable:

عند وضع @Injectable() على فئة، فإنها تحدد أن هذه الفئة يمكن استخدامها في عملية الزراعة (Dependency Injection)، وتقوم بتحويل الفئة إلى إنشاء قابل للحقن. عندما يتم تضمين @Injectable()، يُعتبر الكلاس جاهزًا لتوفيره كاعتماد (Dependency) في مكونات أخرى، وذلك بتحديده في constructor بواسطة @Inject.

@Inject:

على الجانب الآخر، يستخدم @Inject لتحديد النوع الذي تريد حقنه في constructor. يتم استخدامه في constructor لتوضيح الاعتماد الذي يجب حقنه، ويُعطي لك السيطرة الكاملة على كيفية تحديد الاعتماد. في المثال الذي قدمته، @Inject(Hamburger) يُشير إلى أنك تريد حقن كائن من نوع Hamburger، وهذا يعني أن Angular سيقوم بإنشاء كائن Hamburger ويحقنه في constructor.

يمكن أن يكون لديك استفسار حول متى يجب استخدام @Inject وهل هو ضروري في كل الحالات. في الواقع، عندما تستخدم Angular، يقوم بفحص الأنواع تلقائيًا ويقوم بتوفير الاعتماد الصحيح تلقائيًا دون الحاجة إلى @Inject في العديد من الحالات. ومع ذلك، يمكن استخدام @Inject إذا كنت ترغب في فحص النوع بنفسك أو إذا كنت تعمل مع أنواع متقدمة.

في الختام، تتيح لك Angular 2 بلغة TypeScript تنظيم وتسهيل عمليات الزراعة وإدارة الاعتمادات بشكل فعال، واستخدام @Inject و @Injectable يشير إلى كيفية تعامل Angular مع تلك الاعتمادات.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!