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

لوحة المتصدرين

  1. Mustafa Suleiman

    Mustafa Suleiman

    الأعضاء


    • نقاط

      4

    • المساهمات

      13209


  2. مهند سليمان

    مهند سليمان

    الأعضاء


    • نقاط

      3

    • المساهمات

      29


  3. عمر قره محمد

    عمر قره محمد

    الأعضاء


    • نقاط

      2

    • المساهمات

      4096


  4. Youssef Bahloul

    Youssef Bahloul

    الأعضاء


    • نقاط

      2

    • المساهمات

      286


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 05/15/23 في كل الموقع

  1. ما هي المواصفات التي يجب أن تكون بشريك العمل حتي يكون العمل ناجح ؟ كيف أختاره ؟ وكيف أضمن أنه شغوف وليس كتمضية وقت فقط ؟ أي أنه جدي في العمل معي ؟ وانت كيف اخترت شريك عملك شاركنا خبرتك 💖
    2 نقاط
  2. مرحبا جميعا احبائي انا علوان ناصر عراقي الجنسية اعيش حاليا في العراق بعد 13 سنة من عيشي بالاردن ولكن بسبب تدهور الاحوال اضطررت ان ارجع اعيش بالعراق انا وعائلتي ولكن نحن المقاتلون لن نستسلم الي 3 اشهر من رجعت مالقيت شغل قررت اشتغل على الانترنيت وبدعمكم اكبر ان شاء الله واسف جدا على الاطالة المحتوى:- اولا:برامج خاصة ومتابعة يوميا من ناحية التدريب والنظام الغذائي ثانيا:- برامج خاصة لزيادة الوزن او نقصان الوزن ثالثا:- تمارين علاجية لمن يعانون من مشاكل الديسك او الم الرقبة او الم الركب والكاحل رابعا:- تمارين خاصة لمن لديهم ضمور في العضلات وخامسا:- ستراتيجات مخصصة لمن ينون الاقلاع عن التدخين او المخدرات واذا قمتم بكتابة اسمي على اليوتيوب سترون لقائاتي على القنوات الاردنية والعراقية والسورية ولكن انا ماعندي قناة يوتيوب لكوني جديد على التكلنوجيا
    1 نقطة
  3. ماذا أفعل إذا أردت إضافة شعار لمدونتي علي بلوجر الشعار المقصود هنا هو الذي يظهر بجانب اسم الموقع في علامة التبويب أو البحث مثل الصور المرفقة هنا :
    1 نقطة
  4. انا تركت تعلم البرمجة لفترة طويله تقريبا والان عدت للتعلم واشعر بالتشتت والضياع ولا اعرف ماذا افعل هل اتعلم الاساسيات او ابدا بفهم اللغه بأكملها أو انسخ والصق المشاريع الموجودة مثل مشروع بناء موقع شخصي وأيضا انا عندما اعرف بعض الاكواد وأتي الى التطبيق لا اعرف بماذا استخدمها يعني ليس لدي افكار حول ماذا افعل بهذا الاكواد وأي المشاريع الذي افعلها وحاليا اشعر بتشتت كبير وضياع في نفس الوقت وارجو منكم مساعدتي على حل كل هذا المشاكل وماهي الطريقة المثلى للتعلم وشكرا
    1 نقطة
  5. يوجد العديد من المواصفات التي يمكن أن تسهم في نجاح شريك العمل وتعزز العمل المشترك. سوف أذكر بعض المواصفات الأساسية:- المهارات والخبرة: يجب أن يكون لدى شريك العمل المهارات والخبرة اللازمة في المجال الذي تعمل فيه. يمكنك تقييم ذلك من خلال النظر في سجل العمل السابق للشريك المحتمل والاستفسار عن مستوى معرفته وخبرته. التوافق الشخصي: يجب أن يكون هناك توافق شخصي بينك وبين شريك العمل. يمكن أن يشمل ذلك القيم والعقلية المشتركة، والتوجه نحو العمل، والأهداف المشتركة. يمكنك معرفة ذلك من خلال إجراء مقابلات شخصية مع الشركاء المحتملين ومناقشة الرؤى والأهداف المشتركة. الالتزام والموثوقية: يجب أن يكون شريك العمل ملتزمًا بالعمل وموثوقًا في أدائه. يمكن أن تشير المراجع والموظفون السابقون إلى مدى موثوقية الشريك المحتمل وقدرته على الالتزام بالمواعيد والتزاماته. الاتصال والتعاون: يجب أن يكون لدى شريك العمل مهارات التواصل الجيدة والقدرة على التعاون. يمكن أن يساهم الاتصال الفعال والتعاوني في تحسين تنسيق العمل وتحقيق الأهداف المشتركة لضمان أن شريك العمل شغوف وليس مجرد قضاء وقت فقط، يمكنك اتباع بعض الخطوات:- التحدث عن الرؤية والأهداف: تحدث مع شريك العمل المحتمل عن الرؤية والأهداف المشتركة واستمع إلى وجهات نظرة شريك العمل وتصوره للمستقبل. استمع إلى رؤيتهم وتحدث عن كيفية تحقيق تلك الأهداف بشكل مشترك. إذا أظهر شريك العمل الشغف والاهتمام الواضح بتحقيق هذه الأهداف، فقد يكون مؤشرًا إيجابيًا على شغفهم بالعمل. المشاركة في مشاريع تجريبية: قد يكون من الجيد البدء بمشروع تجريبي صغير مع شريك العمل المحتمل لتقييم مدى التفاني والشغف الذي يظهره في العمل. هذا يمكن أن يكون فرصة لمعرفة مدى استعداده للعمل بجد وتفانٍ وتحمل المسؤولية. المراجع والتوصيات: حاول الحصول على مراجع من الأشخاص الذين عملوا مع شريك العمل المحتمل في الماضي. استفسر عن مدى انخراطهم في العمل وشغفهم ومدى جدية تعاملهم. قد تعطيك تلك المراجع فكرة أفضل عن شخصية وأداء شريك العمل. أما عن تجربتي الخاصة في إختيار شريك العمل ، بالفعل لقد عملت من قبل في مشاريع وأعمال مع أشخاص ولكن أنا أفضل أن لا أعمل مع الغرباء ولذلك كان أول اختيار لي هو أصدقائي وزملائي في المجال والتي تنطبق عليهم المواصفات التي أخبرتك بها بالاعلى ربما يكون لديك أصدقاء وزملاء كثر ولكن ليس كلهم يؤدون نفس الأداء لذلك كان يجب الإهتمام كثيراً في اختيار الشريك الذي سوف أعمل به .
    1 نقطة
  6. اهلا لدي مشكلة في البوستمان عند ارسال الريكويست ياتي اثنين من الرسيبونس احدهما بدون محتوى وهو مايتم اعتماده
    1 نقطة
  7. بجانب ما اقترح مصطفى، يمكنك القيام بذلك عن طريق التحرير على نسق القوالب وفق المراحل التالية: ارفع الأيقونة التي قمت بتصميمها إلى أي خدمة الاستضافة الخاصة بك. احفظ رابط الصورة المرفوعة للأيقونة. في لوحة التحكم في بلوجر، اختر "تخطيط المدونة" ثم انقر على "تحرير HTML". استخدم الأمر <link> لربط الصفحة بالأيقونة، ويجب أن يتم وضع هذا الأمر داخل عنصر <head> في صفحة HTML. استخدم الكود التالي: <link rel="shortcut icon" href="رابط الصورة"> قم بتغيير "رابط الصورة" في الأمر <link> برابط الصورة التي قمت بتحميلها في الخطوة الثانية. احفظ التغييرات وشاهد النتيجة بالذهاب إلى مدونتك وتحديث الصفحة. ستظهر الأيقونة بجانب عنوان الموقع في علامة التبويب.
    1 نقطة
  8. أنت بذلك تقصد FavIcon أي أيقونة المفضلة، ولإضافتها إلى مدونتك على بلوجر، عليك بإتباع التالي: قم بإعداد الشعار الخاص بك بتنسيق صورة صغيرة، عادةً بحجم 16x16 بكسل أو 32x32 بكسل. يجب أن يكون الشعار بتنسيق صورة مشفرة بتنسيق ICO أو PNG. انتقل إلى "تخطيط المدونة" (Layout) من لوحة التحكم. انقر على "تحرير" (Edit) بجانب عنصر "رأس المدونة" (Blog Header). ستنتقل إلى صفحة تحرير عنصر رأس المدونة. ابحث عن خيار "fav icon" أو "رمز الموقع" (Site Icon). انقر على زر "اختيار ملف" (Choose File) أو "استعراض" (Browse) لتحديد ملف FavIcon الذي قمت بإعداده في الخطوة الأولى. بعد اختيار الملف، انقر على زر "حفظ" (Save) أو "تحديث" (Update) لحفظ التغييرات.
    1 نقطة
  9. أهم ما يجب أن تبحث عن هو الإهتمام المشترك والرغبة في بذل الجهد والوقت، وليس فقط سعيًا لكسبًا المال، حيث أن في بداية المشروع لن يتوفر المال لفترة ليست بالقصيرة تتراوح من سنة حتى 3 سنوات. لذلك يجب أن يكون لديه دراية بطبيعة المشروع ولديه خبرة به قريبة من خبرتك حتى تتمكنوا من التفاهم وبذل جهد متقارب، وابتعد عمن يريد المكسب السريع بالطرق الملتوية فهى ذات عمر قصير وتأتي بنتائج عكسية حتى لو كسبت القليل في البداية. ولا يلزم أن يكون في نفس مجالك، بل قد يكون مكمل لعملك، مثلاً أنت مبرمج فقد يكون شريك عملك هو مصمم واجهات مثلاً. ولا يشترط أن تتوافقا في كل شيء لكن يجب أن يكون هناك تفاهم وإلتزام بالشروط وجدية في العمل، وأيضًا تقارب السن أمر هام في بعض الأحيان لكونه يعني تشابه في الأهداف التي يسعى كل منكما للوصول إليها.
    1 نقطة
  10. يمكن أن تختلف المواصفات التي يجب أن تتوفر في شريك العمل حسب نوع العمل والمجال الذي تعمل فيه. ومع ذلك، فإن بعض المواصفات الأساسية التي يجب أن يتوفر في شريك العمل لتحقيق نجاح العمل هي: 1. الشغف والتفاني في العمل. 2. المهارات والخبرة المطلوبة لأداء المهام المطلوبة. 3. القدرة على التواصل والتعاون مع الآخرين. 4. الإلمام بالتقنيات والأدوات المستخدمة في مجال العمل. 5. القدرة على التكيف مع التغييرات والتحديات. بالإضافة إلى ذلك، يجب أن يكون شريك العمل متحمسًا للعمل معك، وأن يشاركك نفس رؤية وأهداف العمل. بشأن كيفية اختيار شريك العمل، يجب أولاً تحديد المهام التي يجب أن يؤديها شريك العمل، ثم تحديد المواصفات التي يجب أن يتوفر بها شريك العمل لأداء هذه المهام بشكل جيد. بعد ذلك، يجب إجراء عملية اختيار دقيقة لشريك العمل، وذلك من خلال إجراء مقابلات شخصية وفحص سيرة ذاتية لشركائك المحتملين. أخيرًا، من أجل ضمان أن شريك عملك جدي في العمل، يجب على كلا الطرفين تحديد أهداف واضحة للعمل، وتحديد خطط عمل محددة لتحقيق هذه الأهداف. كذلك، يجب على كلا الطرفين تحديد مسؤولياتهم بشكل واضح، وإظهار التزامهم بأداء هذه المسؤوليات بشكل جاد.
    1 نقطة
  11. السلام عليكم عندي سؤال وياريت القى اجابه مفيدة انا عندي عمل قائم والحمدلله ناجح وعندي لي صديق حابب يشارك فلوسه معي في هذه الحاله كيف يتم حسب نسبة شراكته وايش افضل طريقة للعمل في هذه الحاله الرجاء الإفادة وشكرا
    1 نقطة
  12. كيفية تحويل النص من الجهة اليمنى الى اليسرى على برنامج ان ديزاين يعني عكس النص
    1 نقطة
  13. مرحبا أنا يوسف في كورس تطوير واجهات المستخدم ولم انتهي منه بعد. أولا: شكرا على الكورس انه رائع ومفيد جدا! ثانيا: أنا الآن كما قلت انا في كورس فلنفترض اني انتهيت منه ومرت الستة أشهر هل سيظل الكورس مفتوح لي حيث اذا واجهتني في اية اكواد اخرى او اية مشاريع أو غير هذا،فهل يمكنني الإبلاغ عنها هنا أم سيقفل الكورس ولن أستطيع او يعني يظل الكورس مفتوح الى الأبد؟ مع أطيب التحيات!
    1 نقطة
  14. لا مشكلة في السؤال، للحصول على شهادة إتمام الدورة ستحتاج إلى أن فهم الدورة بشكل وافي، وأيضًا رفع المشاريع التي تم تنفيذها خلال الدورة على GitHub لإرسالها للمراجعة. وهم: بناء واجهة مستخدم تشبه موقع YouTube بناء صفحات هبوط وتشمل: صفحة قريبًا الانطلاق صفحة شركة صفحة تطبيق جوال صفحة شخصية تطوير متجر إلكتروني تطوير موقع شركة تطوير لوحة تحكم بناء مواقع ثابتة باستخدم Hugo تطوير موقع أخباري وتستطيع التقدم للإمتحان بمجرد إتمام 4 مسارات أي الحد الأدنى هو عند مسار تطوير متجر إلكتروني، ولكن الأفضل هو إنهاء الدورة بالكامل ولا تستعجل. وأسلوب الإمتحان هو مكالمة صوتية لمدة 30 دقيقة مع أحد المدربين لسؤالك حول الدورة وعن مدى فهمك والأمور التي نفذتها أنت، وبعد ذلك سيتم تحديد مشروع لك لنفيذه لمدة تتراوح ما بين أسبوع إلى أسبوعين ثم مكالمة صوتية أخرى لمدة 30 دقيقة لمناقشة المشروع. ولا تقلق تستطيع التقدم للإمتحان مرة أخرى، ولكن حاول الاستعداد جيدًا توفيرًا لوقتك للنجاح من المرة الأولى. وقد تم شرح ذلك بشكل وافي في النقاشات التالية وبمزيد من التفاصيل وطريقة التقدم للإمتحان: وبخصوص العمل على مواقع العمل الحر مثل خمسات ومستقل، فطبعًا تستطيع ذلك بمجرد قدرتك على تنفيذ مشروع بمفردك بواسطة HTML,CSS,JS و مكتبة jQuery وأي مشروع يتطلب تلك المهارات تستطيع تقديم عرض عليه. لكن نصيحتي إليك هي بقراءة النقاش التالي لتفهم طبيعة سوق العمل: وبخصوص طريقة التعلم الصحيحة أنصحك بقراءة النقاش التالي:
    1 نقطة
  15. ماذا يحصل عند اتمامي للكورس؟ وهل ستكون هناك مشاريع أقوم بعملها بنفسي؟وهل هناك أصلا مشاريع سأقوم بها عند انتهائي من الكورس؟ وهل سأستطيع أن أعمل على مواقع العمل الحر؟ واعتذر عن الأسئلة الكثيرة😅
    1 نقطة
  16. نعم سيظل الكود مفتوحاً إلى الأبد، وستتمكن من الوصول إلى جميع موارد الكورس ومن ضمنها التحديثات التي يتم إضافتها كل فترة.
    1 نقطة
  17. بالتوفيق للجميع وتحياتي لكم
    1 نقطة
  18. أنت بذلك قد اكتسبت فهمًا جيدًا للغة وانتهيت من أساسياتها. ولكن، يجب أن تلاحظ أن تعلم البرمجة عملية مستمرة، ودائمًا ما يوجد دائمًا مزيد من المفاهيم والمواضيع لاستكشافها وتعلمها. إذا كنت ترغب في توسيع معرفتك ومهاراتك في لغة JavaScript، يمكنك الاستمرار في دراسة المواضيع المتقدمة مثل كيفية تطوير موقع ويب (Web development)، وأطر العمل (Frameworks) الخاصة لغة جافاسكريبت، وستدرس أيضًا قواعد البيانات في الدورة. وهناك مفهوم البرمجة الموجهة (Object-oriented programming) ستتعلمه أيضًا في الدورة باستخدام بايثون، وتستطيع تطبيق نفس المفهوم في لغة جافاسكريبت. ولا تنخدع بأنك بذلك قد تعلمت اللغة، بل تعلمت الأساسيات التي تمكنك من استكمال مسيرتك في تعلم اللغة، حيث أن هناك المزيد وأنصحك بدراسة القسم الأول من دورة تطوير التطبيقات باستخدام JavaScript حيث أنه متاح لك مجانًا وبه معلومات إضافية: https://academy.hsoub.com/courses/javascript-application-development/javascript-intro/ ما هي أساسيات جافاسكريبت التي يجب معرفتها في البداية؟ 1- مفهوم البرمجة والمبادئ الأساسية فهم كيفية عمل البرامج والمفاهيم المشتركة مثل المتغيرات والتحكم التسلسلي والشروط. 2- بنية اللغة فهم بنية لغة JavaScript وترتيب الكود والتعليقات والمسافات البيضاء. 3- المتغيرات والأنواع البيانية التعرف على المتغيرات وكيفية تعريفها واستخدامها، وأنواع البيانات المختلفة مثل الأعداد والسلاسل النصية وقيمة الصح والخطأ. 4- العوامل والعمليات الحسابية كيفية استخدام العوامل الرياضية الأساسية مثل الجمع والطرح والضرب والقسمة، والعمليات الأخرى مثل الزيادة والنقصان. 5- التحكم في التدفق فهم كيفية التحكم في تدفق البرنامج باستخدام الشروط (مثل if و else) والحلقات (مثل for و while). 6- الدوال كيفية تعريف الدوال واستخدامها في تجزئة البرنامج إلى وحدات قابلة لإعادة الاستخدام. 7- المصفوفات استيعاب طريقة إنشاء واستخدام المصفوفات لتخزين وتنظيم مجموعة من القيم ذات نوع مشترك. 8- الكائنات فهم مفهوم الكائنات والبرمجة الموجهة للكائنات (OOP)، وكيفية إنشاء الكائنات واستخدام الخصائص والأساليب.
    1 نقطة
  19. TypeScript هي لغة برمجة مصممة لتنفيذ مشاريع JavaScript ضخمة، صممتها Microsoft. فقد بُنيت على سبيل المثال برنامج مثل Azure Management Portal الذي يبلغ عدد أسطر شيفرته 1.2 مليون، وبرنامج Visiual Studio Code الذي يبلغ عدد أسطر شيفرته 300 ألف باستخدام TypeScript. تقدم TypeScript ميزات عديدة لدعم مشاريع JavaScript الضخمة مثل أدوات تطوير أفضل وتحليل شيفرة ساكنة والتحقق من الأنواع عند الترجمة والتوثيق على مستوى الشيفرة. المبدأ الرئيسي تمثل اللغة TypeScript مجموعة مطوّرة من تعليمات JavaScript قادرة على تمييز الأنواع وتترجم عادة إلى شيفرة JavaScript صرفة. ويمكن للمطور أن يحدد إصدار الشيفرة الناتجة طالما أن إصدار ECMAScript هو الإصدار 3 أو أحدث. ويعني أنّ هذه اللغة مجموعة مطوّرة من تعليمات JavaScript أنها تتضمن كل ميزات JavaScript بالإضافة إلى ميزات خاصة بها. وتعتبر كل شيفرات JavaScript شيفرات TypeScript صحيحة. تتألف TypeScript من ثلاثة أقسام منفصلة لكنها متكاملة مع بعضها: اللغة المصرِّف خدمة اللغة تتألف اللغة من القواعد والكلمات المحجوزة (تعليمات) ومسجلات الأنواع Type annotations وتتشابه قواعدها مع مثيلاتها في JavaScript لكنها ليست متماثلة. وأكثر ما يتعامل معه المبرمجون من تلك الأقسام هي اللغة. تنحصر مهمة المصرِّف في محو المعلومات المتعلقة بالنوع بالإضافة إلى التحويلات على الشيفرة. إذ تمكن عملية تحويل الشيفرة من نقل شيفرة TypeScript إلى شيفرة JavaScript قابلة للتنفيذ. يزيل المصرِّف كل ما يتعلق بالأنواع أثناء الترجمة، وبالتالي لا تميز هذه اللغة الأنواع بشكل فعلي قبل الترجمة. تعني عملية التصريف بالمعنى المتعارف عليه، تحويل الشيفرة من الشكل الذي يمكن للإنسان قراءته وفهمه إلى الشكل الذي تفهمه الآلة. أما عملية الترجمة في TypeScript فهي عملية تحويل الشيفرة من شكل يفهمه الإنسان إلى شكل آخر يفهمه الإنسان أيضًا، لذا من الأنسب أن تسمى هذه العملية بالنقل Transpilling. لكن مصطلح الصريف هو الأشيع في هذا المضمار وسنستخدمه نحن بدورنا. ينفذ المصرِّف أيضًا عملية تحليل الشيفرة ما قبل التنفيذ. إذ يمكنه إظهار رسائل التحذير والخطأ إن كان هناك سبب لذلك، كما يمكن أن يُهيَّئ لتنفيذ مهام إضافية كضم الشيفرة الناتجة في ملف واحد. تجمع خدمة اللغة معلومات عن الأنواع الموجودة في الشيفرة المصدرية. وبالتالي ستتمكن أدوات التطوير من استخدامها في تقديم ميزة إكمال الشيفرة في بيئات التطوير وطباعة التلميحات وتقديم اقتراحات لإعادة كتابة أجزاء من الشيفرة. الميزات الرئيسية للغة TypeScript سنقدم تاليًا وصفًا لبعض ميزات اللغة TypeScript. والغاية من ذلك تزويدك بالأساسيات التي تقدمها اللغة وميزاتها، وذلك للتعامل مع الأفكار التي سنراها تباعًا في المنهاج. مسجلات الأنواع وهي طريقة خفيفة في TypeScript لتسجيل الأنواع التي نريد أن تمرر أو تعاد من الدوال أو أنواع المتغيرات. فلقد عرفنا في المثال التالي على سبيل المثال الدالة birthdayGreeter التي تقبل معاملين أحدهما من النوع string، والآخر من النوع number، وستعيد قيمة من النوع string. const birthdayGreeter = (name: string, age: number): string => { return `Happy birthday ${name}, you are now ${age} years old!`; }; const birthdayHero = "Jane User"; const age = 22; console.log(birthdayGreeter(birthdayHero, 22)); نظام الخصائص المعرفة للأنواع تستخدم اللغة TypeScript الخصائص المعرفة للأنواع structural typing. ويعتبر عنصران في هذا النظام متوافقان إن كان لكل ميزة في النوع الأول ميزة تماثلها تمامًا في النوع الثاني. ويعتبر النوعان متطابقان إذا كانا متوافقان مع بعضهما. الاستدلال على النوع يحاول المصرِّف أن يستدل على نوع المعلومة إن لم يحدد لها نوع. إذ يمكن الاستدلال على نوع المتغير بناء على القيمة التي أسندت له. تحدث هذه العملية عند تهيئة المتغيرات والأعضاء، وعند إسناد القيم الافتراضية للمعاملات، وعند تحديد القيمة التي تعيدها دالة. لنتأمل على سبيل المثال الدالة Add: const add = (a: number, b: number) => { /* تستخدم القيمة المعادة لتحديد نوع القيمة التي تعيدها الدالة*/ return a + b; } يستدل المصرِّف على نوع القيمة المعادة للدالة بتعقب الشيفرة حتى الوصول إلى عبارة return. تعيد هذه العبارة مجموع المعاملين a وb. وكما نرى فكلا المعاملين من النوع number وهكذا سيستدل المصرِّف على أن القيمة التي تعيدها الدالة من النوع number. وكمثال أكثر تعقيدًا، لنتأمل الشيفرة التالية (قد يكون المثال صعب الفهم قليلًا إن لم تكن قد استخدمت TypeScript مسبقًا. يمكنك تخطي هذا المثال حاليًا.) type CallsFunction = (callback: (result: string) => any) => void; const func: CallsFunction = (cb) => { cb('done'); cb(1); } func((result) => { return result; }); بداية نجد تصريحًا لاسم نوع مستعار type alias يدعى CallsFunction. يُمثل نوع دالة تقبل معاملًا واحدًا callback يمثِّل بدوره دالة تتلقى معاملًا من النوع "string" وتعيد قيمة من النوع any. وكما سنرى لاحقًا فالنوع any هو شكل من أشكال الحروف البديلة wildcards والتي يمكن أن تحل محل أي نوع. بعد ذلك نعرّف الدالة func من النوع CallsFunction. يمكننا أن نستدل من نوع الدالة بأن معاملها الدالة cb ستقبل فقط معاملًا من النوع string.ولتوضيح ذلك سنورد مثالًا آخر تُستدعى فيه دالة كمعامل لكن بقيمة من النوع number، وسيسبب هذا الاستدعاء خطأً في TypeScript. وأخيرًا نستدعي الدالة func بعد أن نمرر إليها الدالة التالية كمعامل: (result) => { return result; } وعلى الرغم من عدم تحديد أنواع معاملات الدالة، يمكننا الاستدلال من سياق الاستدعاء أن المعامل result من النوع String. إزالة الأنواع تزيل TypeScript جميع الأنواع التي يبنيها نظام تحديد الأنواع أثناء الترجمة: فلو كانت الشيفرة قبل الترجمة كالتالي: let x: SomeType; ستكون بعد الترجمة: let x; ويعني هذا عدم وجود أية معلومات عن الانواع أثناء التنفيذ، فلا يشير أي شيء على أن متغيرًا X على سبيل المثال قد عُرِّف أنه من نوع ما. سيكون النقص في المعلومات عن الأنواع في زمن التنفيذ مفاجئًا للمبرمجين الذين اعتادوا على استخدام تعليمات التحقق Reflection وغيرها من أنظمة إظهار البيانات الوصفية. هل علينا فعلا استعمال TypeScript؟ إن كنت من متابعي المنتديات البرمجية على الانترنت، ستجد تضاربًا في الآراء الموافقة والمعارضة لاستخدام هذه اللغة. والحقيقة أنّ مدى حاجتك لاستخدام الدوال التي تقدمها TypeScript هي من يحدد وجهة نظرك. سنعرض على أية حال بعض الأسباب التي قد تجعل استخدام هذه اللغة مفيدًا. أولًا: ستقدم ميزة التحقق من الأنواع وميزة التحليل الساكن للشيفرة (قبل الترجمة والتنفيذ). كما يمكننا أن نطلب قيمًا من نوع محدد وأن نتلقى تحذيرات من المصرِّف عندما نستخدم هذه القيم بشكل خاطئ. سيقلل هذا الأمر الأخطاء التي تحصل وقت التنفيذ، كما يمكن أن يقلل من عدد اختبارات الأجزاء unit tests التي يحتاجها التطبيق وخاصة ما يتعلق باختبارات الأنواع الصرفة pure types. ولا تحذرك عملية التحليل الساكن للشيفرة من الاستخدام الخاطئ للأنواع وحسب، بل تشير إلى الأخطاء الأخرى ككتابة اسم المتغير أو الدالة بشكل خاطئ أو استخدام المتغير خارج المجال المعرّف ضمنه. ثانيًا: يمكن لميزة تسجيل الأنواع أن تعمل كشكل من أشكال التوثيق على مستوى الشيفرة. إذ يمكنك أن تتحقق من خلال بصمة الدالة signature من الأنواع التي تتلقاها الدالة والأنواع التي ستعيدها. سيبقى هذا الشكل من التوثيق محدّثًا أثناء تقدم العمل، وسيسهّل ذلك التعامل مع مشاريع جاهزة وخاصة للمبرمجين الجدد. كما ستساعد كثيرًا عند العودة إلى مشاريع قديمة. يمكن إعادة استخدام الأنواع في أي مكان من الشيفرة، وستنتقل أية تغييرات على تعريف النوع إلى أي مكان استخدم فيه هذا النوع. وقد يجادل البعض بأن استخدام JSDoc سينجز التوثيق على مستوى الشيفرة بشكل مماثل، لكنه لا يرتبط بالشيفرة بشكل وثيق كما تفعل أنواع TypeScript، وقد يسبب هذا خللًا في تزامن عرض المعلومات، بالإضافة إلى أنها أطول. ثالثًا: ستقدم بيئة عمل اللغة ميزة إكمال الشيفرة بشكل أفضل لأنها تعلم تمامًا نوع البيانات التي تعالجها. وتعتبر الميزات الثلاث السابقة مفيدة للغاية عند إعادة كتابة الشيفرة. فسيحذرك التحليل الساكن للشيفرة من الأخطاء في شيفرتك، وسيرشدك معالج إكمال الشيفرة إلى الخصائص التي يقدمها المتغير أو الكائن أو حتى خيارات لإعادة كتابة الشيفرة بشكل أنسب، وسيساعدك التوثيق على مستوى الشيفرة في فهم الشيفرة المكتوبة. وبهذه المساعدة التي تقدمها لك بيئة عمل هذه اللغة، سيكون من السهل استخدام الميزات الأحدث من لغة JavaScript وفي أية مرحلة تقريبًا بمجرد تغيير إعدادات التهيئة. ما الأمور التي لا يمكن للغة TypeScript أن توفرها لك؟ لقد ذكرنا سابقًا أن تسجيل الأنواع والتحقق منها فقط في مراحل ما قبل التنفيذ. فحتى لو لم يشر المصرِّف إلى أخطاء فقط تحدث الأخطاء أثناء التنفيذ. تحدث أخطاء زمن التنفيذ بشكل متكرر عند التعامل مع مصدر دخل خارجي كالبيانات المستقبلة كطلب عبر شبكة. وضعنا أخيرًا قائمة بالمشاكل التي قد تواجهنا عند استخدام TypeScript، ويجب الانتباه إليها: الأنواع غير المكتملة أو الخاطئة أو المفقودة التي مصدرها مكتبات خارجية قد تجد في بعض المكتبات الخارجية أنواعًا غير معرّفة أو ذات تعريف خاطئ بشكل أو بآخر. والسبب المرجح أنّ المكتبة لم تُكتَب بلغة Typescript، وأنّ المبرمج الذي صرّح عن النوع يدويًا قد ارتكب خطأً. عليك في هذه الحال كتابة التصريح عن النوع يدويًا بنفسك. لكن هناك فرصة كبيرة أن يكون أحدهم قد فعل ذلك مسبقًا عوضًا عنك، تحقق من موقع DefinitelyTyped أو صفحة GitHub الخاصة بهذا الموقع أولًا. وهذان المصدران هما الأكثر شعبية لإيجاد ملفات تعريف الأنواع. في حال لم يحالفك الحظ، لابدّ أن تبدأ من الصفر بقراءة توثيق TypeScript بما يخص تعريف الأنواع. قد يحتاج الاستدلال على النوع إلى بعض المساعدة إن الاستدلال على النوع في هذه اللغة جيد جدًا لكنه ليس مثاليًا. قد تعتقد أحيانًا أنك صرحت عن نوع بشكل مثالي، لكن المصرِّف يحذرك بشكل مستمر من أن خاصية محددة غير موجودة أو أنّ التصريح بهذه الطريقة غير مسموح. عليك في حالات كهذه مساعدة المصرِّف بتنفيذ عملية تحقق إضافية من النوع الذي صرحت عنه، وخاصة فيما يتعلق بالتحويل بين الأنواع type casting أو حاميات الأنواع type gaurds. عند التحويل بين الأنواع أو عند استخدام الحاميات فأنت بذلك تضمن للمصرِّف أن القيمة التي وضعتها هي بالتأكيد من النوع المصرح عنه وهذا مصدر للأخطاء. ربما عليك الاطلاع على التوثيق فيما يتعلق بحاميات الأنواع أو مؤكدات الأنواع Type Assertions. أخطاء الأنواع الغامضة من الصعب أحيانًا فهم طبيعة الخطأ الذي يعطيه نظام تحديد الأنواع، وخاصة إن استخدمت أنواع معقدة. وكقاعدة أساسية، ستحمل لك رسائل خطأ TypeScript المعلومات الأكثر أهمية في نهاية الرسالة. فعندما تظهر لك رسالة طويلة مزعجة، ابدأ بالقراءة من آخر الرسالة. ترجمة -وبتصرف- للفصل Background and introduction من سلسلة Deep Dive Into Modern Web Development
    1 نقطة
×
×
  • أضف...