TypeScript
JavaScript مع أنواع تكشف الأخطاء قبل التشغيل
الأنواع والواجهات، الاتحادات والتضييق، الأصناف، الأنواع العامة (Generics) وأنواع الأدوات — شغّل كل مثال وشاهد المترجم يكشف أخطاءك فورًا.
- عدد الدروس: 30
- عدد الفصول: 8
- بالعربية والإنجليزية
تقدّمك
محتوى التوثيق
الدروس مرتّبة من الأساس إلى المتقدّم. اقرأها بالترتيب أو اقفز إلى ما تحتاجه.
الفصل 1
البداية
- 1مقدمة إلى TypeScriptلغة TypeScript هي JavaScript مضافًا إليها الأنواع؛ تكشف الأخطاء أثناء كتابة الكود وقبل أن تصل إلى المستخدمين، ثم تتحوّل إلى JavaScript عادية تعمل في كل مكان.
- 2تثبيت TypeScript وإعداد المشروعثبّت TypeScript باستخدام npm، وترجم ملفاتك بالأمر tsc، وجهّز مشروعًا حقيقيًا بملف الإعدادات tsconfig.json الذي يُنشئه الأمر npx tsc --init.
- 3أول برنامج بلغة TypeScriptاكتب برنامجك الأول: أضف تحديدات الأنواع إلى المتغيرات والدوال، ودع TypeScript تستنتج الأنواع بنفسها، واقرأ أول رسالة خطأ من المترجم.
الفصل 2
الأنواع الأساسية
- 4الأنواع الأولية: string وnumber وbooleanتعرّف على الأنواع الثلاثة التي ستستخدمها كل يوم: string وnumber وboolean، وكيف تمنعك TypeScript من الخلط بينها.
- 5الأنواع الخاصة: any وunknown وvoid وneverتعرّف على الأنواع الخاصة: any الذي يوقف الفحص، وunknown البديل الآمن له، وvoid للدوال التي لا تُرجع قيمة، وnever لما لا يحدث أبدًا، إضافة إلى null وundefined في الوضع الصارم.
- 6المصفوفات والـ Tuplesحدّد نوع عناصر المصفوفة باستخدام number[] أو Array<string>، واجعلها للقراءة فقط بالكلمة readonly، واستخدم الـ Tuple لمصفوفة ثابتة الطول لكل موضع فيها نوعه الخاص.
- 7أنواع الكائناتصِف شكل الكائنات بأنواع الكائنات، واجعل بعض الخصائص اختيارية بالعلامة ? أو للقراءة فقط بالكلمة readonly، وشاهد كيف تكشف TypeScript الأخطاء الإملائية والخصائص الناقصة.
- 8استنتاج الأنواعتعلّم كيف تستنتج TypeScript الأنواع بنفسها من القيم الأولية والقيم المرجعة والسياق، ومتى يجب أن تكتب الأنواع بنفسك.
الفصل 3
الدوال
- 9الدوال في TypeScriptحدّد أنواع معاملات الدوال وقيمها المرجعة، واستخدم المعاملات الاختيارية والافتراضية ومعاملات البقية (Rest) بأمان.
- 10أنواع الدوال ودوال الاستدعاءصِف الدوال نفسها كأنواع، وحدّد أنواع دوال الاستدعاء (Callbacks) التي تمرّرها إلى دوال أخرى، وافهم معنى void في دوال الاستدعاء.
- 11التحميل الزائد للدوال (Overloads)استخدم توقيعات التحميل الزائد عندما يمكن استدعاء الدالة بأكثر من طريقة ويتغير نوع نتيجتها حسب ما تستقبله، وتعرّف متى يكون النوع الاتحادي أبسط.
الفصل 4
بناء الأنواع
- 12الأسماء المستعارة للأنواع والواجهاتسمِّ أنواعك باستخدام type وinterface، ووسّعها لتبني أنواعًا أكبر، وتعلّم متى تختار كل واحدة منهما.
- 13الأنواع الاتحادية والتقاطعيةاجمع الأنواع معًا: النوع الاتحادي A | B يعني «هذا أو ذاك»، والنوع التقاطعي A & B يعني «هذا وذاك معًا».
- 14الأنواع الحرفيةقيّد القيمة بنصوص أو أرقام محددة مثل "small" | "medium" | "large"، واستخدم as const، وابنِ أنواعًا نصية بالقوالب الحرفية (Template Literal Types).
- 15التعدادات (Enums)اجمع الثوابت المترابطة تحت اسم واحد باستخدام التعدادات الرقمية والنصية، وتعرّف على شكلها بعد الترجمة، وقارنها بالأنواع الاتحادية الحرفية.
- 16تضييق الأنواع (Narrowing)حوّل النوع الواسع إلى نوع محدد بفحوص تفهمها TypeScript: typeof والقيم الصحيحة والمساواة وin وinstanceof والاتحادات المميَّزة وحراس الأنواع المخصصة.
- 17تأكيد الأنواع (Type Assertions)أخبر المترجم بأنك تعرف نوع القيمة باستخدام as، واستخدم تأكيد عدم الفراغ ! بحذر، وفضّل satisfies عندما تريد الفحص دون أن تخسر دقة الأنواع.
الفصل 5
الأصناف
- 18الأصناف في TypeScriptاكتب أصنافًا بخصائص ومُنشئات ودوال محددة الأنواع، واحمِ بياناتك بالكلمات public وprivate وprotected وreadonly، واختصر الكود بخصائص المُنشئ.
- 19الوراثة والأصناف المجردةوسّع الأصناف باستخدام extends وsuper، وأعد تعريف الدوال بأمان بالكلمة override، واستخدم الأصناف المجردة كقوالب يجب على الأصناف الوارثة إكمالها.
- 20تطبيق الواجهات على الأصناف (implements)استخدم implements لتتعهد بأن الصنف يلتزم بواجهة معينة، وطبّق عدة واجهات في صنف واحد، واكتب كودًا يعتمد على الواجهات بدلًا من الأصناف المحددة.
الفصل 6
الأنواع العامة (Generics)
الفصل 7
الأنواع المتقدمة
- 23keyof وtypeof والوصول المفهرساشتقّ أنواعًا جديدة من أنواع وقيم موجودة: keyof يعطيك المفاتيح، وtypeof ينسخ نوع قيمة، والوصول المفهرس T["key"] يستخرج نوع خاصية.
- 24الأنواع المساعدة (Utility Types)حوّل الأنواع الموجودة بأدوات جاهزة مثل Partial وRequired وReadonly وPick وOmit وRecord وReturnType، واكتشف كيف تُبنى من الداخل باستخدام الأنواع المُعيَّنة (Mapped Types).
الفصل 8
التطبيق العملي
- 25الوحدات (Modules) في TypeScriptقسّم الكود إلى ملفات باستخدام import وexport، وشارك الأنواع بالصيغة import type، وافهم كيف تترجم TypeScript الوحدات وكيف تحصل على أنواع مكتبات JavaScript.
- 26البرمجة غير المتزامنة في TypeScriptحدّد أنواع الكود غير المتزامن: Promise<T> وasync/await، ومعالجة الأخطاء بالنوع unknown، وPromise.all مع الـ Tuples، وتحديد أنواع البيانات القادمة من الخادم.
- 27الوضع الصارم وخيارات tsconfigافهم ما يفعّله الخيار "strict": true بالتفصيل، مثل strictNullChecks وnoImplicitAny، وتعرّف على خيارات أمان إضافية تستحق التفعيل في مشاريعك.
- 28TypeScript مع DOMحدّد أنواع كود صفحات الويب: أنواع العناصر مثل HTMLInputElement، والتعامل مع null الذي تُرجعه querySelector، وأنواع الأحداث، والنماذج بأمان.
- 29TypeScript في المشاريع الحقيقيةشاهد كيف تُستخدم TypeScript مع Node.js وExpress وReact وNestJS، وكيف تبدأ كل نوع من المشاريع، وكيف تنتقل الأنواع بين الخادم والواجهة.
- 30أفضل الممارسات في TypeScriptعادات تجعل كود TypeScript آمنًا وسهل القراءة: الوضع الصارم، وتجنّب any، وترك الاستنتاج يعمل، ونمذجة البيانات بالاتحادات، والتحقق من البيانات عند حدود البرنامج.