Skip to content
← Back to rules

eslint/no-unneeded-ternary 懸念

⚠️🛠️ A dangerous auto-fix is available for this rule.

何ができるか

よりシンプルな代替手段がある場合、三項演算子を使用しないように制限する

なぜ問題なのか

JavaScript では、2 つの真偽値の間を選択するために条件式を使用するという誤った習慣がよく見られる。代わりに、テストを真偽値に変換するために ! を使うべきである。

また、単一の変数を条件テストと結果の両方として使用するというミスも頻出する。このような状況では、論理積 (OR) を使って同じ機能を実現できる。

このルールにおける 不正な コードの例:

js
const isYes = answer === 1 ? true : false;
const isNo = answer === 1 ? false : true;

foo(bar ? bar : 1);

このルールにおける 正しい コードの例:

js
const isYes = answer === 1;
const isNo = answer !== 1;

foo(bar || 1);

設定

このルールは、以下のプロパティを持つ設定オブジェクトを受け入れます。

defaultAssignment

type: boolean

default: true

デフォルト代入パターン x ? x : y の許可を指定します。

false に設定すると、x ? x : y といったケースも警告対象となり、論理和形式 x || y に置き換えることを推奨します。true(デフォルト)の場合、このようなデフォルト代入は許可され、報告されません。

使用方法

設定ファイルまたは CLI でこのルールを 有効化 するには、次のようにします:

json
{
  "rules": {
    "no-unneeded-ternary": "error"
  }
}
bash
oxlint --deny no-unneeded-ternary

参照