首页 > 解决方案 > 是否有防止在单行 if 语句中赋值的 eslint 规则?

问题描述

我正在尝试查找是否存在允许以下任何一项的非插件 eslint 规则:

function(x) {
let count = 0;
  if (doIncrement(x)) count++
  else (doDecrement(x)) count--
  if (count >=10) return "over nine";
  else return "keep counting";
}

但只有错误:

let listOfThings = [];
if (treatAsString) listOfThings[0] = myString.trim();
else listOfThings = [...myString.split(',').map(stringPart => stringPart.trim())];


// or

let name = '';
if (hasFirstAndLAstName) name = `${firstName} ${lastName}`;
else name = `${emailAddress}`;

赞成像这样使用三元赋值:

const listOfThings = treatAsString
  ? [myString.trim()]
  : [...myString.split(',').map(stringPart => stringPart.trim())];

// or

let name = hasFirstAndLAstName ? `${firstName} ${lastName}` : emailAddress;

eslint 是否存在该规则(或规则组合)而不涉及插件?

标签: javascripteslint

解决方案


目前没有非插件的。

事实上,即使是像prefer-ternary这样的插件规则也不会捕获复杂的情况,例如您的失败案例,其中包括索引字段分配与我将其归类为“超级复杂”的完全重新分配。


推荐阅读