Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تأكيدات النوع

جزء من قسم Introduction To TypeScript في رحلة JavaScript على Coddy — الدرس 68 من 73.

أحياناً لا تملك TypeScript معلومات كافية لتحديد النوع الدقيق لقيمة ما، ولكنك كمطور تعرف أكثر عن ماهية هذه القيمة في الواقع. تسمح لك تأكيدات النوع (Type assertions) بإخبار TypeScript "ثق بي، أنا أعرف أن هذه القيمة من هذا النوع المحدد".

توفر TypeScript طريقتين لكتابة تأكيدات النوع (type assertions). تعتبر صيغة as هي النهج الأكثر شيوعاً:

let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;

يمكنك أيضاً استخدام صيغة الأقواس الزاوية (angle-bracket)، على الرغم من أنها أقل شيوعاً في TypeScript الحديثة:

let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

challenge icon

التحدي

سهل

قم بإنشاء دالة تعالج البيانات من محاكاة لـ API خارجي. ستعمل مع قيم من النوع unknown وتستخدم تأكيدات النوع (type assertions) للوصول إلى خصائصها بأمان.

قم بإنشاء متغير apiResponse من النوع unknown وقم بتعيين سلسلة JSON التالية له:

{"userId": 42, "username": "alice_dev", "isActive": true}

قم بإنشاء دالة باسم processUserData تقوم بما يلي:

  • تأخذ معاملًا data من النوع unknown
  • تستخدم تأكيد النوع لمعاملة data كـ string
  • تقوم بتحليل سلسلة JSON باستخدام JSON.parse()
  • تستخدم تأكيد نوع آخر لمعاملة النتيجة المحللة ككائن يحتوي على الخصائص userId (رقم)، و username (سلسلة نصية)، و isActive (قيمة منطقية)
  • تعيد سلسلة نصية منسقة: "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}

اختبر دالتك واطبع المخرجات التالية:

  • استدعِ processUserData مع apiResponse واطبع النتيجة
  • استدعِ processUserData مع secondApiResponse واطبع النتيجة
  • استدعِ processUserData مع thirdApiResponse واطبع النتيجة

ورقة مرجعية

تسمح لك توكيدات النوع (Type assertions) بإخبار TypeScript بالنوع المحدد للقيمة عندما تعرف أكثر مما يمكن لـ TypeScript استنتاجه.

استخدم صيغة as (الأكثر شيوعاً):

let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;

صيغة الأقواس الزاوية البديلة:

let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;

جرّب بنفسك

// إنشاء متغيرات استجابة واجهة برمجة التطبيقات (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));
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Introduction To TypeScript