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

يتوفر الكيان الفارغ أيضًا في JavaScript و TypeScript. في JS ، هذا هو المشغل. في TS ، هذا هو نوع البيانات البدائية. وهنا وهناك ،
void
لا يتصرف كما يتوقع العديد من أولئك الذين
void
بلغات أخرى.
جافا سكريبت بيان باطل
في JavaScript ، يقوم عامل التشغيل
void
بتقييم التعبير الذي تم تمريره إليه. في الوقت نفسه ، وبغض النظر عن التعبير الذي يتم تقييمه ، يتم إرجاع
void
دائمًا بدون
undefined
.
let i = void 2;
لماذا نحتاج إلى مثل هذا المشغل؟
أولاً ، تجدر الإشارة إلى أنه في السنوات الأولى من برمجة JS ، يمكن للمطورين إعادة تعريف
undefined
وكتابة بعض القيمة إليه. ولكن
void
دائما بإرجاع القيمة الحقيقية
undefined
.
ثانياً ، يعد استخدام عامل التشغيل
void
طريقة ممتعة للعمل مع الوظائف التي تسمى فورًا:
void function() { console.log('What') }()
وكل هذا - دون تلوث مساحة الاسم العالمية:
void function aRecursion(i) { if(i > 0) { console.log(i--) aRecursion(i) } }(3) console.log(typeof aRecursion)
نظرًا لأن عامل التشغيل
void
دائمًا ما يُرجع
undefined
ويقيِّم دائمًا التعبير الذي تم تمريره إليه ، فلدينا طريقة معبرة جدًا للعودة من الوظيفة دون إعادة بعض القيمة ، ولكن مع مكالمة ، على سبيل المثال ، بعض رد الاتصال:
هذا يقودنا إلى أهم طريقة لاستخدام
void
. هذا المشغل هو نوع من تطبيق "حارس آخر". إذا كانت هناك مهمة معينة يجب أن تُرجع دائمًا دون تحديد ، فيمكن تحقيق ذلك باستخدام عامل
void
.
button.onclick = () => void doSomething();
نوع البيانات الفارغة في TypeScript
اكتب
الفراغ في TypeScript يمكن أن يسمى شيئا مثل عكس
any
نوع. وظائف في جافا سكريبت دائما إرجاع شيء. يمكن أن يكون هذا إما قيمة تم تعيينها بواسطة مبرمج أو
undefined
:
function iHaveNoReturnValue(i) { console.log(i) }
نظرًا لأن وظائف JavaScript ، التي لم يتم إرجاع أي منها بشكل صريح ، تُرجع دائمًا دون تحديد ،
void
في TypeScript هو النوع المناسب لإخبار المطورين بأن الوظيفة ترجع بدون
undefined
:
declare function iHaveNoReturnValue(i: number): void
يمكن أيضًا استخدام الكيان
void
في شكل نوع للمعلمات ولأي تعريفات متغير أخرى. القيمة الوحيدة التي يمكن دائمًا تمريرها إلى المعلمة void غير
undefined
.
declare function iTakeNoParameters(x: void): void iTakeNoParameters() // iTakeNoParameters(undefined) // iTakeNoParameters(void 2) //
نتيجةً لذلك ، اتضح أن الأنواع
void
وغير
undefined
في TS هي نفس الشيء تقريبًا. ولكن هناك اختلاف بسيط واحد بينهما ، وهو في الواقع مهم للغاية. يمكن استبدال نوع
void
المرتجع بأنواع أخرى ، مما يسمح لك بتنفيذ أنماط متقدمة للتعامل مع عمليات الاسترجاعات.
function doSomething(callback: () => void) { let c = callback()
يتوقع المطورون أن تقوم هذه التصميمات ، التي تستخدم غالبًا في تطبيقات JS ، بالقيام بذلك.
هنا هي المواد في هذا الموضوع.
إذا كنت تريد أن تقبل الدالة فقط الوظائف التي تُرجع
undefined
، يمكنك تغيير توقيع الطريقة وفقًا لذلك:
النتائج
عامل
void
في JavaScript ونوع البيانات
void
في TypeScript كيانات بسيطة إلى حد ما. نطاق الحالات التي تنطبق عليها محدود. ومع ذلك ، تجدر الإشارة إلى أن المبرمج الذي يستخدمه ، على الأرجح ، لن يواجه أي مشاكل عند العمل معه.
أعزائي القراء! هل تستخدم
void
في JS و TS؟
