الانتقال إلى المحتوى الرئيسي
الوحدة 1 · الدرس 1 من 21/14 في الدورة~10 min
دروس الوحدة (1/2)

الأنواع البدائية والشروح

TypeScript هي مجموعة فرعية مكتوبة من JavaScript، مما يعني أنها تضيف بناء جملة نوع ثابت أعلى JavaScript الموجود. في وقت التشغيل، يتم تجميع كافة تعليمات TypeScript البرمجية إلى JavaScript خالصة وتختفي الأنواع تمامًا أثناء عملية الإنشاء.

بفضل TypeScript، يمكنك اكتشاف الأخطاء قبل تشغيل التعليمات البرمجية في المتصفح، مما يجعل عملية التطوير الخاصة بك أكثر قوة وأمانًا وقابلة للتطوير.


الأنواع البدائية

يدعم TypeScript أنواع JavaScript البدائية القياسية:

  • string: يمثل تسلسلات من الأحرف (على سبيل المثال 'Alice'، "Hello").
  • number: يمثل القيم الرقمية، سواء الأعداد الصحيحة أو العشرية (على سبيل المثال 42، 3.14).
  • boolean: يمثل القيم الحقيقية (true أو false).
  • null وundefined: يمثل الغياب المتعمد أو غير المقصود للقيمة.
TS
const username: string = 'Alice';
const score: number = 100;
const isActive: boolean = true;

الشروح المتغيرة والاستدلال

في TypeScript، يمكننا إضافة تعليق توضيحي للنوع باستخدام النقطتين (:) متبوعًا بالنوع.

إذا حاولت تعيين قيمة من نوع مختلف (على سبيل المثال، تعيين سلسلة إلى age مُعرّفة على أنها number)، فسيقوم مترجم TypeScript على الفور بإظهار خطأ قبل تشغيل التعليمات البرمجية.


خطورة النوع any

النوع any عبارة عن فتحة هروب خاصة تخبر TypeScript بإيقاف تشغيل التحقق من النوع لهذا المتغير بشكل كامل.

TS
let data: any = 42;
data = 'Hello'; // No error!
data.nonExistentMethod(); // No error at compile time, but it crashes at runtime!

يؤدي استخدام any إلى إبطال جميع فوائد الأمان لاستخدام TypeScript. تعتبر ممارسة سيئة ويجب تجنبها دائمًا في كود الإنتاج.


التعليقات التوضيحية للوظيفة ونوع void

يمكننا إضافة تعليقات توضيحية لكل من المعلمات والقيمة المرجعة للدالة:

TS
function calculateTax(price: number, taxRate: number): number {
  return price * taxRate;
}

إذا لم تُرجع الدالة أي قيمة (على سبيل المثال، تقوم فقط بإرجاع console.log)، فنوع الإرجاع الخاص بها هو void:

TS
function logMessage(message: string): void {
  console.log(message);
}

جربه بنفسك

التمرين 1: المتغيرات المكتوبة

تمرين#ts.m1.l1.e1
المحاولات: 0جارٍ التحميل…

قم بتعريف ثلاثة متغيرات مكتوبة بشكل صريح: اسم المستخدم كسلسلة بقيمة "Alice"، والنتيجة كرقم بقيمة 100، وisActive كسلسلة منطقية بقيمة true. لا تستخدم أي نوع.

جارٍ تحميل المحرر…
إظهار التلميح

استخدم بناء الجملة: سلسلة، ورقم، و: منطقي بعد اسم كل متغير.

الحل متاح بعد 3 من المحاولات

التمرين 2: وظيفة الترحيب

تمرين#ts.m1.l1.e2
المحاولات: 0جارٍ التحميل…

قم بإنشاء دالة باسم Greeting والتي تقبل اسم معلمة من نوع السلسلة وترجع سلسلة بالتنسيق "Hello،" متبوعًا بالاسم. حدد بوضوح كلاً من نوع المعلمة ونوع الإرجاع.

جارٍ تحميل المحرر…
إظهار التلميح

قم بتعريف الوظيفة كوظيفة Greeting(name: string): string { ... } وإرجاع الرسالة.

الحل متاح بعد 3 من المحاولات

التمرين 3: محول درجة الحرارة

تمرين#ts.m1.l1.e3
المحاولات: 0جارٍ التحميل…

قم بتعريف دالة باسم celsiusToFahrenheit تقبل معلمة celsius من النوع number وترجع درجة الحرارة المكافئة بالدرجات فهرنهايت (رقم). الصيغة هي مئوية * 9 / 5 + 32. حدد بوضوح نوع المعلمة ونوع الإرجاع.

جارٍ تحميل المحرر…
إظهار التلميح

اضرب في 9 مئوية، واقسم على 5، وأضف 32 وأعد النتيجة بنوع الإرجاع: number في الدالة.

الحل متاح بعد 3 من المحاولات

التمرين 4: حساب الخصم

تمرين#ts.m1.l1.e4
المحاولات: 0جارٍ التحميل…

قم بإنشاء دالة باسم accountDiscount تقبل سعر المعلمة لرقم النوع ومعلمة DiscountPercent لرقم النوع، وتقوم بإرجاع السعر المخفض النهائي كرقم. حدد بوضوح كلاً من أنواع المعلمات ونوع الإرجاع.

جارٍ تحميل المحرر…
إظهار التلميح

اطرح نسبة الخصم مقسومة على 100 من 1، ثم اضربها في السعر. تأكد من إضافة تعليقات توضيحية للمعلمات وإرجاع القيمة كرقم.

الحل متاح بعد 3 من المحاولات