كثيرًا ما تسمع أن المشاريع الكبيرة تستخدم TypeScript. فما الفرق بينها وبين JavaScript، ولماذا الانتقال إليها؟
JavaScript — اللغة الأساسية ⚡
JavaScript هي لغة الويب التي تفهمها المتصفّحات. مرنة وسريعة الكتابة، لكن مرونتها تسمح بأخطاء لا تظهر إلّا وقت التشغيل.
let age = 20;
age = "عشرون"; // مسموح — قد يسبّب أخطاء لاحقة
TypeScript — الأمان بالأنواع 🔷
TypeScript تضيف الأنواع فوق JavaScript، فيكتشف المحرّر الأخطاء قبل التشغيل.
let age: number = 20;
age = "عشرون"; // ❌ خطأ فوري في المحرّر
ثم تُترجَم TypeScript إلى JavaScript عادية ليشغّلها المتصفّح.
مثال عملي: خطأ حقيقي تمنعه TypeScript قبل النشر
// JavaScript — يعمل بلا أي تحذير، ينفجر فقط عند استدعائه فعليًّا بمستخدم حقيقي
function getFullName(user) {
return user.firstName + " " + user.lastName;
}
getFullName({ first: "أحمد", last: "علي" }); // "undefined undefined" — بصمت!
// TypeScript — نفس الخطأ، لكن يُكتشَف فورًا في المحرّر قبل حتى تشغيل الكود
interface User { firstName: string; lastName: string; }
function getFullName(user: User) {
return user.firstName + " " + user.lastName;
}
getFullName({ first: "أحمد", last: "علي" });
// ❌ خطأ فوري: Object literal may only specify known properties
هذا هو الفرق الفعلي على أرض الواقع: الخطأ في المثال الأول لا يُظهر أي رسالة
خطأ — فقط نتيجة صامتة خاطئة ("undefined undefined") قد لا يلاحظها أحد
حتى يشتكي مستخدم حقيقي. TypeScript يمنع هذا الصنف بالكامل من الأخطاء قبل
وصول الكود للإنتاج.
جدول المقارنة
| الجانب | JavaScript | TypeScript |
|---|---|---|
| الأنواع | ديناميكية | ثابتة (اختيارية) |
| اكتشاف الأخطاء | وقت التشغيل | وقت الكتابة |
| منحنى التعلّم | أسهل | يتطلّب JS أولًا |
| المشاريع الكبيرة | تصبح صعبة الصيانة | أسهل وأأمن |
| دعم المحرّر (Autocomplete) | محدود | ممتاز جدًّا |
| خطوة إضافية | لا شيء | ترجمة (Compile) قبل التشغيل |
خطأ شائع عند الانتقال
محاولة تحويل مشروع JavaScript كبير قائم إلى TypeScript دفعة واحدة. الأصح:
TypeScript تسمح بالتبنّي التدريجي — أعد تسمية الملفّات من .js إلى .ts
واحدًا تلو الآخر، وابدأ بـ any حيث لا تعرف النوع بعد، ثم حسّنه تدريجيًّا.
محاولة الكمال من اليوم الأول تُضيّع وقتًا وتُثبّط الفريق.
متى تنتقل إلى TypeScript؟
- مشروع صغير أو تعليمي؟ → JavaScript يكفي.
- مشروع كبير أو ضمن فريق؟ → TypeScript توفّر عليك أخطاءً كثيرة.
الخلاصة
TypeScript ليست منافسًا لـ JavaScript بل ترقية لها. أتقن JavaScript أولًا، ثم أضف TypeScript عندما تكبر مشاريعك.