Kodokon kodokon.com

لماذا TypeScript، أول ملف بأنواع لك

اكتشف ما هو TypeScript، والمشكلة التي يحلها، واكتب أول ملف بأنواع على الإطلاق.

6 دقيقة · 3 أسئلة

افتح هذا الدرس في Kodokon

أنت تعرف بالفعل JavaScript، اللغة التي تجعل صفحات الويب تفاعلية. TypeScript هو امتداد لـ JavaScript: أي شيفرة JavaScript صحيحة هي أيضًا شيفرة TypeScript. إضافته الكبرى هي الأنواع. النوع يصف طبيعة القيمة: نص، أو رقم، أو صواب أو خطأ... بتحديدك لنوع متغيّراتك، تسمح للحاسوب بالتحقق من شيفرتك قبل تشغيلها.

لماذا هذا مفيد؟ في JavaScript، لا شيء يمنعك من تمرير نص في مكان يُتوقع فيه رقم. البرنامج يعمل رغم ذلك... وينتج نتيجة غير منطقية، غالبًا ما تُكتشف لاحقًا بكثير. انظر إلى هذا المثال: الدالة تتوقع سعرًا كرقم، لكنها تستقبل نصًا.

JAVASCRIPT
function addTax(price) {
  return price + price * 0.2;
}

const total = addTax("100");
console.log(total); // "10020" instead of 120!
في JavaScript، هذا الخطأ يمرّ دون أن يُلاحظ إطلاقًا.

مع TypeScript، تضيف تعليقًا للنوع (type annotation): نقطتان متبوعتان بالنوع، بعد اسم المعامل أو المتغيّر مباشرة. تُصرَّف (compile) شيفرة TypeScript بعد ذلك، أي تُترجَم إلى JavaScript صرفة عبر أداة تُسمى المصرِّف (tsc). وخلال هذه الخطوة تُكتشف أخطاء الأنواع ويُبلَّغ عنها.

TYPESCRIPT
function addTax(price: number): number {
  return price + price * 0.2;
}

const total = addTax(100);
console.log(total); // 120
هنا، كتابة addTax("100") سيتم رفضها قبل التنفيذ.

الآن لنكتب أول ملف بأنواع لك. يستخدم ملف TypeScript الامتداد .ts بدلًا من .js. بداخله، تكتب JavaScript عادية، مُثراة بتعليقات الأنواع.

TYPESCRIPT
let firstName: string = "Sarah";
let age: number = 28;

console.log(firstName + " is " + age + " years old.");
أول ملف لك: hello.ts

اختبار المعرفة

تأكّد من أنك تذكّرت النقاط الأساسية في هذا الدرس.

  1. ما هو TypeScript بالنسبة إلى JavaScript؟
    • لغة مختلفة تمامًا عن JavaScript
    • امتداد لـ JavaScript يضيف الأنواع
    • أداة لجعل JavaScript أسرع
    • متصفح ويب
  2. ماذا يحدث عندما تُصرِّف ملف ‎.ts؟
    • يتحوّل إلى ملف JavaScript صرف
    • يُنفَّذ مباشرة بواسطة المتصفح
    • يُحوَّل إلى صفحة HTML
  3. ماذا يعني التعليق في let age: number؟
    • المتغيّر age يساوي دائمًا صفرًا
    • المتغيّر age لا يمكن أن يحمل سوى أرقام
    • المتغيّر age هو نص
    • المتغيّر age اختياري