الأدلة

ما هي لغة TypeScript؟ دليل مبسّط لغير المطورين

TypeScript هي JavaScript مع أنواع. تضيف تسميات تحدد نوع البيانات التي يجب أن تحملها كل قيمة، كرقم أو نص أو قائمة طلبات، فتتحقق TypeScript من الشيفرة وتكشف التعارضات قبل أن تُشغَّل. ويصف موقع TypeScript اللغة بأنها "JavaScript مع صيغة للأنواع"؛ وتُزال الأنواع عند تحويل الشيفرة إلى JavaScript عادي، الذي يعمل في كل مكان تعمل فيه JavaScript.

لماذا تهم عند البناء بالذكاء الاصطناعي

نماذج الذكاء الاصطناعي تكتب الشيفرة بسرعة، والشيفرة السريعة تحمل أخطاءً: حقل اسمه customerName في ملف وcustomer_name في آخر، أو سعر يُمرَّر كنص بدلاً من رقم، أو دالة تُستدعى دون قيمة مطلوبة. وفي JavaScript العادية يظهر كثير من هذه الأخطاء فقط عندما يضغط أحدهم الزر الخطأ.

تلتقط TypeScript كثيراً منها مبكراً، أثناء كتابة الشيفرة:

  • يحصل الذكاء الاصطناعي على ملاحظات فورية. تشير أخطاء الأنواع إلى السطر الخاطئ بالضبط، فيستطيع الوكيل إصلاحه قبل أن تراه.
  • التغييرات أكثر أماناً. إذا غيّرت اسم حقل، تُظهر TypeScript كل موضع ما زال يستخدم الاسم القديم.
  • الشيفرة تشرح نفسها. تُوثّق الأنواع ما تتوقعه الدالة وما تُرجعه، وهذا يفيدك ويفيد الذكاء الاصطناعي وأي مطور يعمل عليها لاحقاً.
  • المحررات أذكى. الإكمال التلقائي و"الانتقال إلى التعريف" يعملان بشكل أفضل لأن المحرر يعرف نوع كل قيمة.

وهذا سبب رئيسي لأن كثيراً من منشئي تطبيقات الذكاء الاصطناعي يستخدمون TypeScript افتراضياً.

تشبيه من الحياة اليومية

فكّر في مستودع شحن مقسّم إلى أرفف مُعنونة. لكل رف لافتة: "منصات فقط"، "مبرّد"، "الحد الأقصى 500 كغ". عند وصول شحنة، يقارن مفتش عند الباب البضاعة باللافتة. السمك المجمّد المتجه إلى رف المواد الجافة يُوقَف عند الباب، لا يُكتشف بعد أسبوع حين تفوح رائحته.

TypeScript هي المفتش عند الباب، والأنواع هي اللافتات. والفحص يحدث قبل أن تدخل البضاعة، أي شيفرتك، حيز الاستخدام. وبعد أن تُوضع كل شيء في مكانه، تُرفع اللافتات: فالـ JavaScript الذي يعمل لا يبقى فيه أي نوع.

كيف تعمل TypeScript

  1. تكتب أنت (أو الذكاء الاصطناعي) ملفات .ts أو .tsx، أي TypeScript مع تسميات الأنواع.
  2. يقرأ مدقق الأنواع الشيفرة ويُبلغ عن التعارضات كأخطاء في المحرر أو في البناء.
  3. تُزال الأنواع في خطوة البناء، فينتج JavaScript عادياً.
  4. يعمل JavaScript في المتصفح أو على الخادم (Node.js أو Deno أو Bun).

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

مثال عملي: نموذج حجز

لنفترض أنك تبني تطبيق حجز لصالون حلاقة. إليك نوعاً يصف الحجز:

type Booking = {
  id: number;
  customerEmail: string;
  service: "haircut" | "colour" | "blow-dry";
  startsAt: Date;
  price: number;
  notes?: string; // علامة ? تعني أن الحقل اختياري
};

ودالة تحسب العربون:

function depositFor(booking: Booking): number {
  return booking.price * 0.2;
}

الآن لاحظ ما تكشفه TypeScript.

حقل مكتوب بشكل خاطئ.

depositFor({ id: 1, customerEmail: "lena@example.com", service: "haircut",
  startsAt: new Date(), prise: 40 });

تُبلغ TypeScript بأن prise ليس خاصية معروفة، وأن price مفقود. في JavaScript العادية، كان هذا سيحسب بصمت عربوناً قيمته NaN (ليس رقماً).

نوع خاطئ من القيم.

const booking: Booking = { ...otherFields, price: "40" };

تُبلغ TypeScript بأن النص لا يمكن استخدامه حيث يُنتظر رقم. من دونها، يعمل "40" * 0.2 بالصدفة، لكن "40" + 5 يعطي "405"، وهو نوع الخطأ الذي يظهر على الفاتورة.

خدمة غير موجودة.

const booking: Booking = { ...otherFields, service: "perm" };

تُبلغ TypeScript بأن "perm" ليست من الخدمات المسموحة. وعندما يضيف الصالون لاحقاً خدمة البروفة (perms)، تضيفها إلى النوع، فتُظهر TypeScript كل موضع يحتاج إلى تحديث، مثل قائمة الأسعار والنموذج وألوان التقويم.

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

TypeScript مقابل JavaScript

JavaScriptTypeScript
ماذا هياللغة التي تشغّلها المتصفحاتJavaScript مع صيغة الأنواع
تعمل مباشرة في المتصفحاتنعمتُحوَّل إلى JavaScript أولاً
تكشف أخطاء الأنواعوقت التشغيل، إن كشفتها أصلاًأثناء الكتابة، قبل التشغيل
الإعدادلا يحتاج إلى شيءخطوة بناء (تتولاها عادةً أدوات مثل Vite أو Next.js)
مناسبة لـالسكربتات الصغيرة والتجارب السريعةالتطبيقات التي ستكبر وتتغير
امتدادات الملفات.js و.jsx.ts و.tsx

شرح المصطلحات الشائعة

المصطلحمعناه
النوع (Type)وصف لما يمكن أن تكونه القيمة: رقم، أو نص، أو شكل كائن محدد.
تسمية النوع (Type annotation)تسمية مكتوبة في الشيفرة، مثل price: number.
استنتاج النوع (Type inference)قيام TypeScript بتحديد النوع بنفسها دون تسمية.
Interface / type aliasوصف مُسمّى لشكل كائن، مثل Booking.
النوع الاتحادي (Union type)قيمة يمكن أن تكون أحد عدة خيارات، مثل "haircut" | "colour".
خاصية اختيارية (Optional property)حقل قد يغيب، ويُشار إليه بالعلامة ?.
anyنوع يوقف الفحص عن قيمة ما، وهو مخرج طوارئ يُستخدم باعتدال.
خطأ نوع (Type error)إبلاغ TypeScript بأن شيئاً لا يتطابق.
التجميع / التحويل (Compile / transpile)تحويل TypeScript إلى JavaScript.
.tsxملف TypeScript يحتوي على JSX، ويُستخدم في تطبيقات React.
tsconfig.jsonملف الإعدادات الذي يحدد مدى صرامة فحص TypeScript للمشروع.
التحقق وقت التشغيل (Runtime validation)فحص البيانات الحقيقية الواردة أثناء عمل التطبيق.

أخطاء شائعة ومفاهيم خاطئة

  • "TypeScript تجعل الشيفرة خالية من الأخطاء." تكشف التعارضات في بنية البيانات، لا في المنطق. فخصم بنسبة 2% بدلاً من 20% يجتاز فحص الأنواع دون مشكلة.
  • "الأنواع تحميني من المدخلات السيئة." الأنواع تختفي وقت التشغيل. تحقق من البيانات القادمة من المستخدمين والنماذج وواجهات البرمجة.
  • any في كل مكان. عندما يتعثر الذكاء الاصطناعي، قد يلجأ إلى any أو // @ts-ignore لإسكات الأخطاء. وهذا يخفي المشكلات بدلاً من حلها.
  • تجاهل أخطاء الأنواع لأن المعاينة تعمل. بعض الأدوات ما زالت تشغّل شيفرة فيها أخطاء أنواع. هذه الأخطاء ما زالت أخطاء تنتظر أن تحدث.
  • "TypeScript أبطأ." تُزال الأنواع قبل التشغيل، والـ JavaScript الذي يعمل هو عملياً نفسه.
  • "هي للفرق الكبيرة فقط." المطوّر الفردي يستفيد أيضاً، خاصة عندما يجري الذكاء الاصطناعي معظم التعديلات.

ماذا تطلب من منشئ التطبيق بالذكاء الاصطناعي

  • "استخدم TypeScript مع تفعيل الوضع الصارم (strict mode)."
  • "عرّف أنواعاً مشتركة لسجلاتنا الرئيسية، مثل Customer وBooking وInvoice، واستخدمها في الواجهة الأمامية والخلفية معاً."
  • "لا تستخدم any أو @ts-ignore لتجاوز الأخطاء؛ أصلح المشكلة الأساسية وأخبرني بما كانت."
  • "تحقق من كل البيانات الواردة على الخادم، لا بالأنواع وحدها."
  • "شغّل مدقق الأنواع وأصلح كل خطأ قبل أن تخبرني بأن العمل انتهى."
  • "عندما تُعيد تسمية حقل، حدّث كل موضع تُظهره TypeScript."
  • "اشرح خطأ النوع هذا بلغة عادية."

لمزيد من التحقق مما ينتجه الذكاء الاصطناعي، انظر كيف تراجع الشيفرة المولّدة بالذكاء الاصطناعي وكيف تصحح تطبيقاً مبنياً بالذكاء الاصطناعي.

TypeScript في Mythex

عندما لا تطلب شيئاً محدداً، تبدأ مشاريع Mythex الجديدة على Vite + React + TypeScript + Tailwind. ويتضمن محرر الشيفرة ذكاءً لغوياً، من إكمال واكتشاف أخطاء و"الانتقال إلى التعريف" في TypeScript وJavaScript وغيرهما، فتظهر أخطاء الأنواع داخل الشيفرة لا في المعاينة فقط. والمحرر للقراءة فقط في خطة Free، وقابل للتعديل بالكامل في خطة Pro. ويمكنك أن تطلب إعداداً مختلفاً في أول طلب لك؛ تشرح صفحة المستندات عن كيف يُختار التقني الطريقة، وتغطي مستندات محرر الشيفرة ما يعرضه المحرر.

الأسئلة

ما هي TypeScript بكلمات بسيطة؟

TypeScript هي JavaScript مع أنواع. تحدد نوع البيانات التي يجب أن تحملها كل قيمة، كرقم أو نص أو سجل عميل، فتتحقق TypeScript من الشيفرة وتكشف التعارضات قبل تشغيلها. ثم تُحوَّل إلى JavaScript عادي.

هل TypeScript لغة مختلفة عن JavaScript؟

هي مجموعة أعلى من JavaScript: JavaScript مع صيغة إضافية للأنواع. يصف موقع TypeScript نفسه بأنها "JavaScript مع صيغة للأنواع". وتُزال الأنواع عند تحويل الشيفرة إلى JavaScript كي تعمل.

لماذا يستخدم منشئو تطبيقات الذكاء الاصطناعي TypeScript؟

تمنح الأنواع الذكاء الاصطناعي والأدوات المحيطة به طريقة سريعة لاكتشاف الأخطاء، مثل تمرير نص حيث يُنتظر رقم، أو كتابة اسم حقل بشكل خاطئ. تظهر الأخطاء قبل أن يصطدم بها المستخدم، فتصبح الشيفرة المولّدة بالذكاء الاصطناعي أسهل في المراجعة والتعديل.

هل تجعل TypeScript التطبيق خالياً من الأخطاء؟

لا. هي تكشف فئة كاملة من الأخطاء المتعلقة ببنية البيانات، لكنها لا تكشف منطق العمل الخاطئ، ولا تتحقق من البيانات التي تصل وقت التشغيل من المستخدمين أو من واجهات البرمجة (APIs) ما لم تضف تحققاً صريحاً.

من يطوّر TypeScript؟

TypeScript لغة مفتوحة المصدر تطورها Microsoft. وتعمل حيثما تعمل JavaScript، بما في ذلك المتصفحات وNode.js وDeno وBun.

Mythex · Pricing · ابنِ أي شيء بالذكاء الاصطناعي · قوالب المواقع والتطبيقات · مقارنات Mythex · مصطلحات بناء التطبيقات بالذكاء الاصطناعي · أدوات مجانية لبناء التطبيقات بالذكاء الاصطناعي · English

English አማርኛ Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)