value = Object.assign(new Model(), value)
مع تمكين prefer-object-spread
فشل النسالة ، الإصلاح التلقائي لاستخدام انتشار الكائن
ولا شيء. يجب أن تتجاهل هذه القاعدة الحالات التي يكون فيها الوسيط الأول لـ Object.assign
هو مثيل فئة.
--project
، يمكننا التحقق مما إذا كان نوع الوسيطة الأولى يشبه classnew ...
وتجاهل التعبيركما ورد في https://github.com/palantir/tslint/issues/2618#issuecomment -303879255
Object.assign
له آثار جانبية على وسيطته الأولى. (لهذا السبب فإن TypeScript transpiles { ...x, ...y }
إلى Object.assign({}, x, y)
.) يجب تفعيل القاعدة فقط إذا كانت الوسيطة الأولى عبارة عن كائن جديد حرفي.
يجب تفعيل القاعدة فقط إذا كانت الوسيطة الأولى عبارة عن كائن جديد حرفي.
حسنًا ، من الناحية الفنية ، أنت على حق. لكنني غالبًا ما أرى أخطاء حيث لا يتوخى المبرمجون الحذر بشأن الآثار الجانبية للحجة الأولى ويقدمون قيمة غير حرفية على أي حال عندما يقصدون فعلًا فعل الشيء نفسه مثل انتشار الكائن. لذلك ما زلت أريد أن تلتقط هذه القاعدة ذلك. ربما يمكن أن يكون الاشتراك ...
إذا لم تكن الوسيطة الأولى كائنًا حرفيًا ، فإن القاعدة تنتج خطأ فقط إذا تم تعيين النتيجة إلى شيء ما.
لا يكون تعيين القيمة المرجعة لـ Object.assign منطقيًا إلا إذا كانت الوسيطة الأولى عبارة عن CallExpression أو NewExpression أو ما شابه ذلك. كل شيء آخر ، مثل المعرف أو PropertyAccessExpression يجب أن يظل خطأ.
وهذا لا يتطلب مدقق النوع.
التعليق الأكثر فائدة
إذا لم تكن الوسيطة الأولى كائنًا حرفيًا ، فإن القاعدة تنتج خطأ فقط إذا تم تعيين النتيجة إلى شيء ما.
لا يكون تعيين القيمة المرجعة لـ Object.assign منطقيًا إلا إذا كانت الوسيطة الأولى عبارة عن CallExpression أو NewExpression أو ما شابه ذلك. كل شيء آخر ، مثل المعرف أو PropertyAccessExpression يجب أن يظل خطأ.
وهذا لا يتطلب مدقق النوع.