تايبسكريبت - لماذا تقوم TSLint و JSLint بالإبلاغ عن الكتل الفارغة؟
من وقت لآخر، أحصل على أخطاء TSLint "الكتلة فارغة". يحدث هذا مثلاً عندما أمرر رد نداء لا يقوم بأي شيء إلى دالة:
doSomething(() => {});
من ما قرأت، يبدو أن JSLint يقوم بنفس الشيء، لكنني لم أتأكد من ذلك.
أجد أن هذه الاستخدامات صحيحة تمامًا، لذا حاولت أن أجد سببًا يجعل الكتل الفارغة تعتبر سيئة على الإطلاق. لكن الشيء الوحيد الذي تمكنت من العثور عليه (على سبيل المثال في هذا الجواب) هو تعليمات لإضافة return; لتجنب الخطأ. هذا ليس ما أريد فعله في كل callback فارغ.
لماذا يقوم TSLint بالإبلاغ عن الكتلة الفارغة أعلاه كمشكلة؟ هل هناك أي سبب يجعلني لا أقوم بتعطيل الفحص؟
الإجابة رقم 1
لماذا يُبلغ TSLint عن الكتلة الفارغة أعلاه كمشكلة
لمنع الأخطاء. ربما تم نسيان تعبئة الوظيفة. يُنصح بـ () => undefined كوظيفة عدم تنفيذ.
المزيد
إذا كنت تريد تعطيله ببساطة أضف "no-empty": false, إلى tslint.json الخاص بك (لتعطيله على مستوى العالم) أو قم بتعطيله مباشرة باستخدام تعليق /* tslint:disable:no-empty */.
الإجابة رقم 2
إذا شعرت أنك لا تريد استخدام الاستدعاء العكسي خلال سيناريوهات معينة يمكنك تعديل الكود
من
doSomething(() => {});
إلى
doSomething(() => undefined);
استبدال() => {} بهذا يعني أنك لا تهتم بهذه الدالة الرجعية. والتحويل الصريح للنوع سيتجنب الاستدلالات.
حظاً موفقاً.
الإجابة رقم 3
طريقة لقمع الخطأ وتحديد أن الكتلة الفارغة كانت مقصودة هي تعطيل القاعدة مؤقتًا:
// tslint:disable-next-line:no-empty
doSomething(() => {});
أو اجعله غير فارغ:
doSomething(() => {/**/});
الإجابة رقم 4
كما هو الحال مع جميع الفحوصات، لديك الحكم النهائي على ما إذا كانت تساعدك أم لا. يمكنك إيقاف تشغيل فحص TSLint هذا باستخدام أحد الخيارات التالية.
تعطيل القاعدة في tslint.json
//...
"no-empty": false,
//...
تعطيل القاعدة في الملف:
/* tslint:disable:no-empty */
يمكنك دائمًا إعادة تشغيله مرة أخرى إذا وجدت في المستقبل كتلة فارغة تسببت لك بمشكلة.
