البرمجة

تحديد أنواع الدوال في TypeScript

السبب الرئيسي وراء التصرف المختلف في تحديد أنواع الدوال هو في كيفية تفسير المترجم لمحتوى الدوال وتنفيذها.

عندما تعرف الدالة باستخدام السنتكس الأول (أي باستخدام السهم) مثل الدالة f في الكود الخاص بك، فإنك بشكل صريح تقول للمترجم أن هذه الدالة ستقوم برمي استثناء من نوع Error ولن تعود بقيمة. وعلى هذا، TypeScript يفهم أن الدالة لن تنتهي بشكل طبيعي، ولن تعود بقيمة محددة، لذلك يتم تحديدها بنوع never.

بالنسبة للدوال g و h، يكون التصرف مختلفًا. في حالة الدالة g، تعرف بطريقة تقليدية باستخدام الكلمة المفتاحية function، وبما أنها لا تعود بقيمة محددة، فإن TypeScript يفترض أنها قد تنتهي بشكل طبيعي ولا ترمي استثناء. لذا، يتم تعيين نوع العودة إلى never تشبه الدالة f.

أما بالنسبة للدالة h، يتم تعريفها بشكل قياسي دون استخدام الكلمات المفتاحية الخاصة بتحديد نوع العودة. وفي TypeScript، إذا لم يتم تحديد نوع العودة بوضوح، فإنه يفترض أن الدالة ستعود بقيمة من النوع void، وهو النوع الذي يشير إلى عدم وجود قيمة معينة تُعيد. لذلك، يتم تعيين نوع العودة للدالة h إلى void.

باختصار، TypeScript يفهم أن الدوال f و g لن تنتهي بشكل طبيعي، لذا يتم تحديدها بنوع never، بينما يفترض أن الدالة h ستنتهي بشكل طبيعي بدون إرجاع قيمة، لذا يتم تعيينها بنوع void.

المزيد من المعلومات

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

عند استخدام السنتكس الحديث باستخدام السهم => كما في الحالة مع الدالة f، يعرف TypeScript بشكل صريح أن الدالة لن تنتهي بشكل طبيعي ولن تعود بقيمة، مما يؤدي إلى تحديد نوع never. هذا يعكس فهمنا الواضح للمطلوب من الدالة والمنطق المتوقع لتنفيذها.

بالمقابل، عند استخدام الكلمة المفتاحية function، كما في الدالة g، يفترض TypeScript أن الدالة قد تنتهي بشكل طبيعي ولكن دون إرجاع قيمة، مما ينتج عنه تحديد نوع never أيضًا. هذا التصور يعكس الطبيعة الاعتيادية لتعريف الدوال باستخدام الكلمة المفتاحية function.

أما بالنسبة للدالة h، التي تم تعريفها بدون استخدام أي كلمة مفتاحية لتحديد نوع العودة، فإن TypeScript يفترض أن الدالة ستنتهي بشكل طبيعي دون إرجاع قيمة محددة، وبالتالي يُفتَرَض أن نوع العودة هو void. هذا يعكس الاستنتاج الافتراضي للمترجم في حالة عدم توضيح النوع المُرجَع من الدالة.

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

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر