no-unneeded-ternary
Запретить использование тернарных операторов, когда существуют более простые альтернативы
Некоторые проблемы, выявленные этой правилами, могут быть автоматически исправлены с помощью опции --fix командной строки
В JavaScript часто допускается ошибка использования условного выражения для выбора между двумя булевыми значениями вместо использования ! для преобразования проверки в булево значение. Вот несколько примеров:
// Bad
var isYes = answer === 1 ? true : false;
// Good
var isYes = answer === 1;
// Bad
var isNo = answer === 1 ? false : true;
// Good
var isNo = answer !== 1;
Еще одной распространённой ошибкой является использование одной переменной как для проверки условия, так и для следствия. В таких случаях можно использовать логическое OR для достижения такой же функциональности. Вот пример:
// Bad
foo(bar ? bar : 1);
// Good
foo(bar || 1);
Подробное описание правила
Это правило запрещает использование тернарных операторов, когда существуют более простые альтернативы.
Примеры неправильного кода для этого правила:
/*eslint no-unneeded-ternary: "error"*/
var a = ;
var a = ;
Примеры правильного кода для этого правила:
/*eslint no-unneeded-ternary: "error"*/
var a = x === 2 ? "Yes" : "No";
var a = x !== false;
var a = x ? "Yes" : "No";
var a = x ? y : x;
f(x ? x : 1); // default assignment - would be disallowed if defaultAssignment option set to false. See option details below.
Опции
Это правило имеет объект опций:
-
"defaultAssignment": true(по умолчанию) разрешает использование условного выражения в качестве шаблона по умолчанию для присваивания -
"defaultAssignment": falseзапрещает использование условного выражения в качестве шаблона по умолчанию для присваивания
defaultAssignment
При установке в значение true, по умолчанию, опция defaultAssignment разрешает выражения вида x ? x : expr (где x — любой идентификатор, а expr — любое выражение).
Примеры дополнительного неправильного кода для этого правила с опцией { "defaultAssignment": false }:
/*eslint no-unneeded-ternary: ["error", { "defaultAssignment": false }]*/
var a = ;
f();
Обратите внимание, что defaultAssignment: false всё ещё разрешает выражения вида x ? expr : x (где идентификатор находится в правой части тернарного оператора).
Когда не следует использовать это правило
Вы можете отключить это правило, если не беспокоитесь о ненужной сложности в условных выражениях.
Связанные правила
Версия
Это правило было добавлено в ESLint v0.21.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-unneeded-ternary