Spec-Zone.ru › ESLint

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 = x === 2 ? true : false;

const b = x ? true : false;

Примеры правильного кода для этого правила:

Открыть в песочнице
/*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 = x ? x : 1;

f(x ? x : 1);

Обратите внимание: defaultAssignment: false по-прежнему разрешает выражения вида x ? expr : x (где идентификатор находится в правой части тернарного оператора).

Когда не следует использовать это правило

Вы можете отключить это правило, если вас не беспокоит излишняя сложность условных выражений.

Связанные правила

  • no-ternary
  • no-nested-ternary

Версия

Это правило появилось в ESLint v0.21.0.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-unneeded-ternary

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API