no-extra-boolean-cast
Запрет лишних преобразований в булевы значения
Использование конфигурации recommended из @eslint/js в файле конфигурации активирует эту проверку
Некоторые проблемы, выявленные этой проверкой, автоматически исправляются с помощью опции --fix командной строки
В контекстах, таких как условие оператора if, где результат выражения уже приводится к булевому типу, преобразование к булевому типу с помощью двойного отрицания (!!) или вызова функции Boolean является избыточным. Например, эти if операторы эквивалентны:
if (!!foo) {
// ...
}
if (Boolean(foo)) {
// ...
}
if (foo) {
// ...
}
Подробности правила
Это правило запрещает лишние преобразования в булевы значения.
Примеры неправильного кода для этого правила:
/*eslint no-extra-boolean-cast: "error"*/
var foo = !;
var foo = ? baz : bat;
var foo = Boolean();
var foo = new Boolean();
if () {
// ...
}
if () {
// ...
}
while () {
// ...
}
do {
// ...
} while ();
for (; ; ) {
// ...
}
Примеры правильного кода для этого правила:
/*eslint no-extra-boolean-cast: "error"*/
var foo = !!bar;
var foo = Boolean(bar);
function qux() {
return !!bar;
}
var 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) && ) {
//...
}
var 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.
var foo = !!bar || baz;
if (foo || bar) {
//...
}
while (foo && bar) {
//...
}
if ((foo || bar) && baz) {
//...
}
var foo = 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