تأكيدات النوع
جزء من قسم مقدمة إلى TypeScript في رحلة JavaScript على Coddy. الدرس 68 من 73.
أحيانًا لا يملك TypeScript معلومات كافية لتحديد النوع الدقيق لقيمة ما، لكنك أنت كمطوّر تعرف المزيد عن ماهية هذه القيمة فعليًا. تتيح لك تأكيدات النوع أن تخبر TypeScript: "ثق بي، أنا أعرف أن هذه القيمة من هذا النوع المحدد."
يوفّر TypeScript صيغتين لتأكيدات الأنواع. تُعدّ صيغة as النهج الأكثر شيوعًا:
let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;يمكنك أيضًا استخدام صيغة الأقواس الزاوية، رغم أنها أقل شيوعًا في TypeScript الحديثة:
let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;التحدي
سهلأنشئ function لمعالجة البيانات من محاكاة API خارجية. ستعمل مع قيم من النوع unknown وتستخدم تأكيدات النوع للوصول بأمان إلى خصائصها.
أنشئ متغيرًا apiResponse من النوع unknown وأسند إليه سلسلة JSON التالية:
{"userId": 42, "username": "alice_dev", "isActive": true}أنشئ function باسم processUserData التي:
- تأخذ مَعلمة
dataمن النوعunknown - تستخدم تأكيد نوع للتعامل مع
dataباعتبارهاstring - تحلل سلسلة JSON باستخدام
JSON.parse() - تستخدم تأكيد نوع آخر للتعامل مع النتيجة المحللة باعتبارها كائنًا يحتوي على الخصائص
userId(من النوع number)، وusername(من النوع string)، وisActive(من النوع boolean) - تعيد سلسلة منسقة:
"User [userId]: [username] (Active: [isActive])" - لها نوع إرجاع صريح هو
string
أنشئ بيانات اختبار إضافية:
- أنشئ
secondApiResponseمن النوعunknownمع سلسلة JSON:{"userId": 15, "username": "bob_admin", "isActive": false} - أنشئ
thirdApiResponseمن النوعunknownمع سلسلة JSON:{"userId": 99, "username": "charlie_user", "isActive": true}
اختبر function واطبع المخرجات التالية:
- استدعِ
processUserDataباستخدامapiResponseواطبع النتيجة - استدعِ
processUserDataباستخدامsecondApiResponseواطبع النتيجة - استدعِ
processUserDataباستخدامthirdApiResponseواطبع النتيجة
جرّب بنفسك
// أنشئ متغيرات استجابة الـ API
const apiResponse: unknown = '{"userId": 42, "username": "alice_dev", "isActive": true}';
const secondApiResponse: unknown = '{"userId": 15, "username": "bob_admin", "isActive": false}';
const thirdApiResponse: unknown = '{"userId": 99, "username": "charlie_user", "isActive": true}';
// TODO: أنشئ دالة processUserData هنا
// اختبر الدالة واطبع النتائج
console.log(processUserData(apiResponse));
console.log(processUserData(secondApiResponse));
console.log(processUserData(thirdApiResponse));يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس مقدمة إلى TypeScript
1البداية مع TS
ما هي TypeScript؟لماذا نستخدم TypeScript؟أول كود TypeScript لكعملية الـ Compilation والأخطاءملخص: مقدمة في TS4التعامل مع الدوال
تحديد أنواع المعاملات وقيم الإرجاعتحديد أنواع Arrow Functionsنوع الإرجاع 'void'المعاملات الاختيارية باستخدام '?'القيم الافتراضية للمعاملاتتحديد أنواع Rest Parametersتعريف أنواع الدوالملخص: بناء دوال محددة الأنواع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) إلى الواجهاتملخص: تحديد هياكل الكائناتتدرّب بنفسك: مترجم JavaScript عبر الإنترنت