never النوع never

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

never النوع never

يعني never "لن تكون هناك قيمة أبدًا": تُعيده الدوال التي ترمي استثناءات أو تدور بلا نهاية؛ وفي طبقة الأنواع هو نوع جزئي من كل الأنواع، وأشهر استخداماته فحص اكتمال تعليمة switch.

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

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

📝 الصيغة

function fail(msg: string): never {
  throw new Error(msg);
}
// فحص الشمول: الفرع default يحوّل الحالات المنسية إلى أخطاء ترجمة
type Shape = Circle | Square;

⚙️ المعاملات

(): neverدالة تُعيد never: لا يُسمح فيها إلا بـ throw أو حلقة لا نهائية أو استدعاء دالة never أخرى — أما return العادية فخطأ

القيمة المُعادة:النوع never هو نفسه "نوع الإرجاع": يعبّر عن دالة لن تُعيد قيمةً بشكل طبيعي إطلاقًا (ترمي استثناءً، أو تنهي العملية، أو تدور بلا نهاية).

▶ مثال

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

الناتج:

caught: disk full

(مخرجات التشغيل بعد التحويل؛ كتابة return 1 داخل fail تؤدي إلى خطأ ترجمة — فدوال never لا يمكنها الإعادة بشكل طبيعي)

💡 نقاط مهمة

ℹ️ معلومة النوع never نوع جزئي من كل الأنواع، لكن لا قيمة يمكن إسنادها إليه — حتى any؛ فهو نوع "المجموعة الخالية".
💡 تلميح أسلوب فحص الاكتمال: اكتب في فرع default من switch التعليمة const _exhaustive: never = value. فإذا أُضيف فرع جديد إلى الاتحاد ونُسي معالجته، وقع خطأ الترجمة هنا فورًا (انظر exhaustive-checks).
⚠️ تنبيه كلا النوعين never و void "لا يعيدان شيئًا" لكن معناهما مختلف تمامًا: void ينتهي بشكل طبيعي دون قيمة مُعادة، أما never فلا ينتهي بشكل طبيعي أصلًا.
المزيد من الحالات قادم قريبًا.

📚 دروس ذات صلة

❓ أسئلة شائعة

س ما الفرق بين never و void؟
ج void: الدالة تنتهي بشكل طبيعي لكن دون قيمة مُعادة (مثل دالة سجل). never: الدالة لن تنتهي بشكل طبيعي إطلاقًا (ترمي استثناء أو تدور بلا نهاية)، أو لا توجد قيمة من هذا النوع على مستوى الأنواع.
س ما الاستخدام الفعلي للنوع never؟
ج له استخدامان رئيسيان: تعليق دوال ترمي استثناءات أو تُنهي العملية؛ وفحص الاكتمال — إسناد قيمة الاتحاد بعد تضييقها إلى never في فرع default بحيث يفشل البناء عند إغفال أي حالة. ويُستخدم أيضًا لترشيح أعضاء الاتحاد في الأنواع الشرطية.
س لماذا صار نوع متغيري never؟
ج غالبًا بسبب التضييق المفرط: بعد استبعاد كل الفروع الممكنة لم يبقَ نوع، أو لأنك أجريت عملية على كود غير قابل للوصول. افحص النوع المتبقي وفق تحليل تدفق التحكم؛ فالسبب غالبًا شرط مكرر في أحد الفروع.
Web-Tutorial.com

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

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

100%