unknown النوع unknown

آخر تحديث: 2026-10-22

unknown النوع unknown

النوع unknown هو "any الآمن": يمكن إسناد أي قيمة إليه، لكن يجب تضييقه أو التأكيد عليه قبل الاستخدام وإلا رفض المترجم ذلك. وهو النوع المفضل لاستقبال المدخلات الخارجية (استجابات الـ API ونتائج JSON.parse).

المجموعةالأنواع الأساسية
النوعنوع
الوضع الصارمغير مطلوب

ℹ️ معلومة يحوّل المحرر لغة TypeScript إلى JavaScript ثم يشغّلها (بدون فحص أنواع)؛ راجع ناتج كل مثال لنتيجة فحص الأنواع.

📝 الصيغة

let value: unknown = JSON.parse(text);
if (typeof value === "string") {
  value.trim(); // لا يمكن استدعاء الطرق إلا بعد التضييق
}

⚙️ المعاملات

typeof x === "string"فحوص مثل typeof x === "string" تضيّق unknown إلى نوع محدد

القيمة المُعادة:لا قيمة مُعادة — unknown تعليق نوع ولا يُنتج أي كود في وقت التشغيل.

▶ مثال

عدّل الكود أدناه واضغط «جرّب» لرؤية نتيجة التحويل:

الناتج:

hi
2.5
unsupported

(مخرجات التشغيل بعد التحويل؛ استدعاء value.trim() دون تضييق يؤدي إلى خطأ ترجمة — وهذه هي الحماية التي يوفرها unknown)

💡 نقاط مهمة

ℹ️ معلومة اتجاه الإسناد هو الفارق الجوهري بينهما: لا يمكن إسناد unknown إلا إلى unknown/any، بينما يمكن إسناد any إلى أي نوع؛ لذلك لا ينشر unknown عدم الأمان.
💡 تلميح أشهر أدوات التضييق: typeof (للقيم الأصلية)، و instanceof (لنسخ الفئات)، و in (لوجود الخاصية)، و Array.isArray (للمصفوفات).
⚠️ تنبيه التضييق يثبت صحة "فرضية النوع" فقط دون التحقق من محتوى البيانات؛ وللتحقق من بنية JSON الخارجي استخدم مكتبة مخططات (schema) مثل zod.
المزيد من الحالات قادم قريبًا.

📚 دروس ذات صلة

❓ أسئلة شائعة

س أيهما أختار: unknown أم any؟
ج الافتراضي هو unknown: فهو يجبرك على تأكيد النوع قبل الاستخدام، فتنكشف الأخطاء في زمن الترجمة. أما any فأداة مؤقتة للنماذج الأولية السريعة أو ترحيل الشيفرة القديمة.
س كيف أحوّل unknown إلى نوع محدد؟
ج على طريقين: التضييق (typeof/instanceof/in، ويتتبعه المترجم تلقائيًا)، أو تأكيد النوع value as T (أنت تضمن صحته للمترجم). فضّل التضييق ولا تكثر من التأكيد.
س ما نوع القيمة المُعادة من JSON.parse؟
ج توقيعها في المكتبة القياسية هو any. الأسلم تغليفها: function safeParse(text: string): unknown { return JSON.parse(text); } ثم التحقق بمخطط (schema).
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%