Menu
CoddyTech
flag Ar iconالعربيةdown icon

النوع 'unknown'

جزء من قسم مقدمة إلى TypeScript في رحلة JavaScript على Coddy. الدرس 8 من 73.

مثل any، يمكن لمتغير من النوع unknown أن يحمل أي قيمة:

let userInput: unknown = "Hello";
userInput = 42;        // لا يوجد خطأ
userInput = true;      // لا يوجد خطأ

الفرق الجوهري هو أن TypeScript لن تسمح لك بإجراء عمليات على قيمة من نوع unknown دون التحقق أولاً من نوعها الفعلي. هذا يمنع العديد من أخطاء وقت التشغيل (runtime errors):

let data: unknown = "TypeScript";
// data.toUpperCase(); // خطأ! TypeScript لا تعرف أنها سلسلة نصية (string)

// يجب عليك التحقق من النوع أولاً
if (typeof data === "string") {
    console.log(data.toUpperCase()); // الآن أصبح الأمر آمناً!
}

هذا يجعل unknown أكثر أماناً بكثير من any لأنه يجبرك على التحقق من النوع قبل استخدام الأساليب (methods) أو الخصائص (properties) الخاصة بالنوع.

challenge icon

التحدي

سهل

قم بإنشاء متغير باسم userInput بنوع unknown وقم بتعيين السلسلة النصية "TypeScript" له.

ثم اكتب حارس نوع (type guard) باستخدام typeof للتحقق مما إذا كان userInput عبارة عن سلسلة نصية. إذا كان سلسلة نصية، فقم بطباعة نسخة الأحرف الكبيرة من السلسلة النصية إلى وحدة التحكم (console). إذا لم يكن سلسلة نصية، فقم بطباعة "Not a string" إلى وحدة التحكم (console).

يوضح هذا كيف يتطلب النوع unknown فحص النوع قبل أن تتمكن من استخدام الطرق الخاصة بالنوع بأمان مثل toUpperCase().

جرّب بنفسك

// إنشاء متغير userInput بنوع غير معروف (unknown)
let userInput: unknown = "TypeScript";

// مهام: اكتب الكود الخاص بك هنا
// استخدم typeof للتحقق مما إذا كان userInput عبارة عن سلسلة نصية (string)
// إذا كانت سلسلة نصية، قم بطباعة النسخة المكتوبة بأحرف كبيرة
// إذا لم تكن سلسلة نصية، قم بطباعة "Not a string"
quiz iconاختبر نفسك

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

جميع دروس مقدمة إلى TypeScript

تدرّب بنفسك: Playground لـ TypeScript