no-unneeded-ternary
Запрещает тернарные операторы, если существуют более простые альтернативы
Некоторые проблемы, выявляемые этим правилом, могут быть автоматически исправлены параметром --fix командной строки
Это правило в настоящее время заморожено, и запросы на добавление функций не принимаются.
В JavaScript часто допускают ошибку, используя условное выражение для выбора между двумя логическими значениями вместо того, чтобы использовать ! для преобразования проверки в логическое значение. Вот несколько примеров:
// Bad
const isYes = answer === 1 ? true : false;
// Good
const isYes = answer === 1;
// Bad
const isNo = answer === 1 ? false : true;
// Good
const isNo = answer !== 1;
Ещё одна распространённая ошибка — использование одной переменной одновременно в качестве условия и результата при истинном условии. В таких случаях для достижения той же функциональности можно использовать логический OR. Вот пример:
// Bad
foo(bar ? bar : 1);
// Good
foo(bar || 1);
Описание правила
Это правило запрещает тернарные операторы, если существуют более простые альтернативы.
Примеры неправильного кода для этого правила:
/*eslint no-unneeded-ternary: "error"*/
const a = ;
const b = ;
Примеры правильного кода для этого правила:
/*eslint no-unneeded-ternary: "error"*/
const a = x === 2 ? "Yes" : "No";
const b = x !== false;
const c = x ? "Yes" : "No";
const d = 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 }]*/
const 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