no-extra-boolean-cast
Запрещает ненужные преобразования к логическому типу
Использование конфигурации recommended из @eslint/js в файле конфигурации включает это правило
Некоторые проблемы, о которых сообщает это правило, можно автоматически исправить с помощью параметра командной строки --fix
Это правило в настоящее время заморожено, и запросы на добавление функций не принимаются.
В таких контекстах, как условие оператора if, где результат выражения уже будет приведён к логическому типу, преобразование к логическому типу с помощью двойного отрицания (!!) или вызова Boolean не требуется. Например, следующие операторы if эквивалентны:
if (!!foo) {
// ...
}
if (Boolean(foo)) {
// ...
}
if (foo) {
// ...
}
Подробности правила
Это правило запрещает ненужные преобразования к логическому типу.
Примеры неправильного кода для этого правила:
/*eslint no-extra-boolean-cast: "error"*/
const foo = !;
const foo1 = ? baz : bat;
const foo2 = Boolean();
const foo3 = new Boolean();
if () {
// ...
}
if () {
// ...
}
while () {
// ...
}
do {
// ...
} while ();
for (; ; ) {
// ...
}
Примеры правильного кода для этого правила:
/*eslint no-extra-boolean-cast: "error"*/
const foo = !!bar;
const foo1 = Boolean(bar);
function qux() {
return !!bar;
}
foo = bar ? !!baz : !!bat;
Параметры
У этого правила есть параметр-объект:
-
"enforceForInnerExpressions"при значенииtrue, помимо проверки стандартных контекстов, проверяет наличие дополнительных преобразований к логическому типу в выражениях, результат которых используется в логическом контексте. См. примеры ниже. По умолчанию установлено значениеfalse, то есть это правило по умолчанию не выдаёт предупреждения о дополнительных преобразованиях к логическому типу во внутренних выражениях.
Устарело: Свойство объекта enforceForLogicalOperands устарело (eslint#18222). Вместо него используйте enforceForInnerExpressions.
enforceForInnerExpressions
Примеры неправильного кода для этого правила, если параметр "enforceForInnerExpressions" имеет значение true:
/*eslint no-extra-boolean-cast: ["error", {"enforceForInnerExpressions": true}]*/
if ( || bar) {
//...
}
while ( && bar) {
//...
}
if (( || bar) && ) {
//...
}
const foo = new Boolean( || baz);
foo && ? baz : bat;
const ternaryBranches = Boolean(bar ? : bat);
const nullishCoalescingOperator = Boolean(bar ?? );
const commaOperator = Boolean((bar, baz, ));
// another comma operator example
for (let i = 0; console.log(i), ; i++) {
// ...
}
Примеры правильного кода для этого правила, если параметр "enforceForInnerExpressions" имеет значение true:
/*eslint no-extra-boolean-cast: ["error", {"enforceForInnerExpressions": true}]*/
// Note that `||` and `&&` alone aren't a boolean context for either operand
// since the resultant value need not be a boolean without casting.
const foo = !!bar || baz;
if (foo || bar) {
//...
}
while (foo && bar) {
//...
}
if ((foo || bar) && baz) {
//...
}
const foo1 = new Boolean(bar || baz);
foo && bar ? baz : bat;
const ternaryBranches = Boolean(bar ? baz : bat);
const nullishCoalescingOperator = Boolean(bar ?? baz);
const commaOperator = Boolean((bar, baz, bat));
// another comma operator example
for (let i = 0; console.log(i), i < 10; i++) {
// ...
}
// comma operator in non-final position
Boolean((Boolean(bar), baz, bat));
Версия
Это правило появилось в ESLint v0.4.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-extra-boolean-cast