Tslint: لا ينبغي تفضيل انتشار الكائن عندما تكون وسيطة Object.assign الأولى هي مثيل فئة

تم إنشاؤها على ٢٥ مايو ٢٠١٧  ·  3تعليقات  ·  مصدر: palantir/tslint

تقرير الشوائب

  • إصدار __TSLint__: 5.3.1

يتم فحص كود TypeScript

value = Object.assign(new Model(), value)

مع تمكين prefer-object-spread

السلوك الفعلي

فشل النسالة ، الإصلاح التلقائي لاستخدام انتشار الكائن

سلوك متوقع

ولا شيء. يجب أن تتجاهل هذه القاعدة الحالات التي يكون فيها الوسيط الأول لـ Object.assign هو مثيل فئة.

  • إذا تم توفير --project ، يمكننا التحقق مما إذا كان نوع الوسيطة الأولى يشبه class
  • إذا لم يتم توفير أي مشروع وقمنا بإجراء فحوصات نحوية فقط ، فإن أفضل ما يمكننا فعله هو التحقق من new ... وتجاهل التعبير

كما ورد في https://github.com/palantir/tslint/issues/2618#issuecomment -303879255

Fixed Bug

التعليق الأكثر فائدة

إذا لم تكن الوسيطة الأولى كائنًا حرفيًا ، فإن القاعدة تنتج خطأ فقط إذا تم تعيين النتيجة إلى شيء ما.
لا يكون تعيين القيمة المرجعة لـ Object.assign منطقيًا إلا إذا كانت الوسيطة الأولى عبارة عن CallExpression أو NewExpression أو ما شابه ذلك. كل شيء آخر ، مثل المعرف أو PropertyAccessExpression يجب أن يظل خطأ.
وهذا لا يتطلب مدقق النوع.

ال 3 كومينتر

Object.assign له آثار جانبية على وسيطته الأولى. (لهذا السبب فإن TypeScript transpiles { ...x, ...y } إلى Object.assign({}, x, y) .) يجب تفعيل القاعدة فقط إذا كانت الوسيطة الأولى عبارة عن كائن جديد حرفي.

يجب تفعيل القاعدة فقط إذا كانت الوسيطة الأولى عبارة عن كائن جديد حرفي.

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

إذا لم تكن الوسيطة الأولى كائنًا حرفيًا ، فإن القاعدة تنتج خطأ فقط إذا تم تعيين النتيجة إلى شيء ما.
لا يكون تعيين القيمة المرجعة لـ Object.assign منطقيًا إلا إذا كانت الوسيطة الأولى عبارة عن CallExpression أو NewExpression أو ما شابه ذلك. كل شيء آخر ، مثل المعرف أو PropertyAccessExpression يجب أن يظل خطأ.
وهذا لا يتطلب مدقق النوع.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات