TypeScript Academy · درس

‏void وnever وتواقيع الدوال

افهموا استخدام void للدوال التي لا تُعيد قيمة وnever للتعليمات البرمجية غير القابلة للوصول

الدرس 4 من 413 خطوة

‏void وnever وتواقيع الدوال درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

مرحبًا

يمثل نوعا الإرجاع الخاصان void وnever الدوال التي لا تنتج قيمة مفيدة والدوال التي لا تكتمل بطريقة طبيعية.

void: لا توجد قيمة مُرجعة ذات معنى

يُستخدم void عندما تنفّذ الدالة أثرًا جانبيًا لكنها لا تُرجع قيمة. ويسمح بإرجاع undefined، لكنه يشير إلى أنه لا ينبغي استخدام القيمة المُرجعة.
function logError(msg: string): void {
  console.error(msg);
  // implicit return undefined
}

الفرق بين void وundefined

يتشابه void وundefined لكنهما مختلفان. يمكن لدالة من النوع void أن تُرجع undefined، إلا أن void يشير إلى أن على المستدعي تجاهل القيمة المُرجعة.
const fn: () => void = () => 42; // Allowed! Caller ignores return
const fn2: () => undefined = () => 42; // Error

void في Callbacks

عند تحديد نوع معلمة callback، يشير void إلى أن المستدعي لا يستخدم القيمة المُرجعة. وهذا يسمح لـ callbacks بإرجاع أي نوع.
function run(cb: () => void): void { cb(); }
run(() => 'hello'); // OK — return value ignored

never: النوع غير القابل للوصول

يمثل never قيمة لا تحدث أبدًا. فالدالة التي تُرجع never إما أن ترمي خطأ أو تدخل في حلقة لا نهائية.
function fail(msg: string): never {
  throw new Error(msg);
}
function loop(): never {
  while (true) {}
}

never في عمليات التحقق من الشمول

يُستخدم never في عبارات switch للتأكد من معالجة جميع حالات الاتحاد. ويؤدي الإسناد إلى never إلى حدوث خطأ إذا لم تتم معالجة إحدى الحالات.
type Shape = 'circle' | 'square';
function area(s: Shape): number {
  switch (s) {
    case 'circle': return 3.14;
    case 'square': return 1;
    default:
      const _: never = s; // Error if a new shape is added
      return 0;
  }
}

never نوع فرعي من كل شيء

يمكن إسناد never إلى كل نوع، لأنه لا يحدث أبدًا، ولذلك يحقق أي نوع بصورة فارغة. ولا يمكن إسناد أي نوع آخر إلى never.

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

يُكتب نوع الدالة بالصيغة `(param: Type) => ReturnType`. وهذا يصف الدوال باعتبارها قيمًا من الدرجة الأولى.
type Handler = (event: MouseEvent) => void;
type Transform = (input: string) => string;

توقيعات الاستدعاء في الواجهات

يمكن للواجهات تعريف أنواع قابلة للاستدعاء باستخدام صيغة توقيع الاستدعاء.
interface Formatter {
  (value: string): string;
  locale: string;
}

توقيعات الإنشاء

يمكن للواجهات أيضًا تعريف أنواع قابلة للإنشاء باستخدام الكلمة المفتاحية new في توقيع الإنشاء.
interface Constructor {
  new (name: string): Animal;
}

دمج void وnever في معالجة الأخطاء

تستخدم الدوال التي ترمي خطأ دائمًا never. أما الدوال التي تبتلع الأخطاء ولا تُرجع شيئًا فتستخدم void. ويهم هذا الفرق في تحليل تدفق التحكم.
function orThrow(val: string | null): string {
  if (val === null) fail('null!'); // never
  return val; // TypeScript knows this is reachable
}

تحقق سريع

أي نوع إرجاع يشير إلى أن الدالة سترمي خطأ دائمًا ولن تُرجع بطريقة طبيعية؟

مراجعة

استخدم void للدوال ذات الآثار الجانبية التي لا تُرجع قيمة ذات معنى. واستخدم never للدوال التي ترمي أخطاء أو تدخل في حلقات لا نهائية. ويتيح never التحقق من الشمول، وهو نوع فرعي من جميع الأنواع.
البدء مجانًا

تعلم TypeScript مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
101
الدروس
352

الأسئلة الشائعة

هل درس «‏void وnever وتواقيع الدوال» مجاني؟

نعم — نص درس «‏void وnever وتواقيع الدوال» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «‏void وnever وتواقيع الدوال»؟

افهموا استخدام void للدوال التي لا تُعيد قيمة وnever للتعليمات البرمجية غير القابلة للوصول تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟

لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «‏void وnever وتواقيع الدوال»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟

نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. التعليقات التوضيحية لأنواع المعاملات والقيم المُعادة
  2. المعاملات الاختيارية والافتراضية
  3. معاملات Rest وSpread مع الأنواع
  4. ‏void وnever وتواقيع الدوال
← العودة إلى TypeScript Academy