مشروع: تعريف الـ Struct للمهمة
جزء من قسم مقدمة إلى TypeScript في رحلة JavaScript على Coddy. الدرس 45 من 73.
مرحبًا بك في أول مشروع لك باستخدام TypeScript! خلال الدروس القليلة القادمة، ستبني تطبيقًا متكاملًا لقائمة المهام يوضّح كيف يساعد TypeScript في إنشاء تعليمات برمجية منظّمة جيدًا وآمنة من حيث الأنواع. سيجمع هذا المشروع العديد من المفاهيم التي تعلمتها حتى الآن: interfaces، والأنواع الحرفية، والمصفوفات، والدوال.
أساس أي نظام لإدارة المهام هو تحديد شكل المهمة. في هذا الدرس، ستنشئ بنية البيانات التي تمثل مهمة واحدة في تطبيقك. يجب أن تلتقط هذه البنية المعلومات الأساسية: معرّفًا فريدًا، وما تدور حوله المهمة، وحالتها الحالية.
ستستخدم واجهة Task الخاصة بك الأنواع الحرفية لخاصية status، ما يعني أن status يمكن أن تكون إحدى قيم السلاسل النصية المحددة القليلة فقط، مثل 'todo' أو 'in-progress' أو 'done'. يمنع هذا الأسلوب الأخطاء المطبعية ويضمن الاتساق في جميع أنحاء تطبيقك - إذ سيتعرّف TypeScript على أي محاولة لاستخدام قيمة status غير صالحة.
سيعمل هيكل المشروع هذا كمخطط أساسي لجميع الوظائف التي ستبنيها في الدروس القادمة، بما في ذلك إضافة مهام جديدة، وتحديث حالتها، وتصفية المهام حسب حالتها الحالية.
التحدي
سهلأنشئ interface باسم Task مع الخصائص التالية:
idمن النوعnumbertitleمن النوعstringstatusيمكن أن تكون إحدى القيم الحرفية التالية فقط:'todo'أو'in-progress'أو'done'
باستخدام interface Task، أنشئ variables التالية:
- أنشئ متغيرًا باسم
firstTaskمن النوعTask، معidيساوي1، وtitleيساوي"Learn TypeScript interfaces"، وstatusيساوي'todo' - أنشئ متغيرًا باسم
secondTaskمن النوعTask، معidيساوي2، وtitleيساوي"Build task management app"، وstatusيساوي'in-progress' - أنشئ متغيرًا باسم
thirdTaskمن النوعTask، معidيساوي3، وtitleيساوي"Write unit tests"، وstatusيساوي'done'
أنشئ دالة باسم getTaskInfo تقبل وسيطًا من النوع Task وتُرجع قيمة من النوع string بالتنسيق "Task [id]: [title] - [status]".
اطبع المخرجات التالية في أسطر منفصلة:
- استدعِ
getTaskInfoباستخدامfirstTaskواطبع النتيجة - استدعِ
getTaskInfoباستخدامsecondTaskواطبع النتيجة - استدعِ
getTaskInfoباستخدامthirdTaskواطبع النتيجة - اطبع حالة
firstTask - اطبع عنوان
secondTask
جرّب بنفسك
// TODO: اكتب الكود الخاص بك هنا
// أنشئ واجهة Task
// أنشئ متغيرات task
// أنشئ الدالة getTaskInfo
// اطبع المخرجات المطلوبةيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس مقدمة إلى TypeScript
1البداية مع TS
ما هي TypeScript؟لماذا نستخدم TypeScript؟أول كود TypeScript لكعملية الـ Compilation والأخطاءملخص: مقدمة في TS4التعامل مع الدوال
تحديد أنواع المعاملات وقيم الإرجاعتحديد أنواع Arrow Functionsنوع الإرجاع 'void'المعاملات الاختيارية باستخدام '?'القيم الافتراضية للمعاملاتتحديد أنواع Rest Parametersتعريف أنواع الدوالملخص: بناء دوال محددة الأنواع7مشروع: قائمة مهام بسيطة
مشروع: تعريف الـ Struct للمهمةدالة لإضافة مهمة2الأنواع الأساسية
الأنواع الأساسية: str, num, booleanالنوع 'any': مخرج الهروبالنوع 'unknown'التعامل مع 'null' و 'undef'استنتاج الأنواع في التطبيق العمليتوضيحات الأنواع الصريحةمراجعة: تدريب على الأنواع الأساسية5الأنواع: الأسماء المستعارة، الاتحادات والتقاطعات
الأسماء المستعارة للأنواع الأساسية (Primitives)أنواع الاتحاد ('|')التعامل مع أنواع الاتحادالأنواع الحرفية (Literal Types)أنواع التقاطع ('&')دمج الأسماء المستعارة للأنواعملخص: تركيبات الأنواع المتقدمة3هياكل البيانات: المصفوفات و Tuple
المصفوفات محددة النوع (Typed Arrays)معدل 'readonly' للمصفوفاتما هو الـ Tuple؟تعريف والوصول إلى الـ Tuplesتفكيك الـ Tuples (Destructuring)الـ Tuples للقراءة فقط (Readonly)المصفوفات محددة النوع متعددة الأبعاداستخدام Spread Operator مع المصفوفاتملخص: المصفوفات و Tuples6تحديد أنواع الكائنات والواجهات
توصيف أنواع الكائنات المضمنة (Inline)الأسماء المستعارة للأنواع (Type Aliases) للكائناتمقدمة عن الواجهات (Interfaces)الواجهات (Interfaces) مقابل الأسماء المستعارة للأنواع (Type Aliases)الخصائص الاختيارية وخصائص القراءة فقط (Readonly)توسيع الواجهات والأنواعإضافة الدوال (Methods) إلى الواجهاتملخص: تحديد هياكل الكائناتتدرّب بنفسك: Playground لـ TypeScript