إذا ، قبل أن تصبح مهتمًا بجافا سكريبت ، كتبت بلغات تقليدية مع كتابة قوية ، فقد تكون على دراية بمفهوم
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؟
