no-unnecessary-boolean-literal-compare
ブールリテラルに対する不要な等価比較を禁止します。
🔒
拡張 「plugin:@typescript-eslint/」strict-type-checked"
の ESLint 設定 でこのルールを有効にします。
🔧
このルールによって報告される問題の一部は、 --fix
ESLint コマンドラインオプション.
で自動的に修正できます。
💭 このルールは 型情報
を実行するために必要です。
ブール値をブールリテラルと比較するのは不要です。それらの比較は同じブール値になります。ブール値を直接使用するか、単項否定(!value
)を使用する方が、より簡潔で明確です。
このルールは、ブールリテラルとの不要な比較を含めないようにします。比較は、
boolean
型のみを持つ変数に対してブールリテラルをチェックする場合、不要とみなされます。型がブール値のユニオン(string | boolean
、SomeObject | boolean
など)である場合、比較は不要とみなされません。module.exports = {
"rules": {
"@typescript-eslint/no-unnecessary-boolean-literal-compare": "error"
}
};
.eslintrc.cjs
プレイグラウンドでこのルールを試す ↗
例
注意
- このページ全体を通して、例では厳密な等価性(
===
と!==
)のみを使用しています。ただし、ルールの実装では、厳密な等価性と緩い等価性を区別していません。===
を使用する以下の例は、==
を使用した場合と同じように扱われ、!==
は!=
を使用した場合と同じように扱われます。 - ❌ 不正
declare const someCondition: boolean;
if (someCondition === true) {
}
✅ 正しいdeclare const someCondition: boolean;
if (someCondition) {
}
declare const someObjectBoolean: boolean | Record<string, unknown>;
if (someObjectBoolean === true) {
}
declare const someStringBoolean: boolean | string;
if (someStringBoolean === true) {
}
✅ 正しいプレイグラウンドで開く
オプション
type Options = [
{
/** Whether to allow comparisons between nullable boolean variables and `false`. */
allowComparingNullableBooleansToFalse?: boolean;
/** Whether to allow comparisons between nullable boolean variables and `true`. */
allowComparingNullableBooleansToTrue?: boolean;
},
];
const defaultOptions: Options = [
{
allowComparingNullableBooleansToTrue: true,
allowComparingNullableBooleansToFalse: true,
},
];
このルールは、次のオプションを受け入れます
このルールは常に、ブール変数とブールリテラルの間の比較をチェックします。デフォルトでは、nullable ブール変数とブールリテラルの間の比較はチェックされません。
allowComparingNullableBooleansToTrue
- このページ全体を通して、例では厳密な等価性(
===
と!==
)のみを使用しています。ただし、ルールの実装では、厳密な等価性と緩い等価性を区別していません。===
を使用する以下の例は、==
を使用した場合と同じように扱われ、!==
は!=
を使用した場合と同じように扱われます。 - ❌ 不正
declare const someUndefinedCondition: boolean | undefined;
if (someUndefinedCondition === true) {
}
declare const someNullCondition: boolean | null;
if (someNullCondition !== true) {
}
✅ 正しいdeclare const someUndefinedCondition: boolean | undefined;
if (someUndefinedCondition) {
}
declare const someNullCondition: boolean | null;
if (!someNullCondition) {
}
✅ 正しい{ allowComparingNullableBooleansToTrue: false }
を使用したこのルールのコード例
allowComparingNullableBooleansToFalse
- このページ全体を通して、例では厳密な等価性(
===
と!==
)のみを使用しています。ただし、ルールの実装では、厳密な等価性と緩い等価性を区別していません。===
を使用する以下の例は、==
を使用した場合と同じように扱われ、!==
は!=
を使用した場合と同じように扱われます。 - ❌ 不正
declare const someUndefinedCondition: boolean | undefined;
if (someUndefinedCondition === false) {
}
declare const someNullCondition: boolean | null;
if (someNullCondition !== false) {
}
✅ 正しいdeclare const someUndefinedCondition: boolean | undefined;
if (!(someUndefinedCondition ?? true)) {
}
declare const someNullCondition: boolean | null;
if (someNullCondition ?? true) {
}
✅ 正しい{ allowComparingNullableBooleansToFalse: false }
を使用したこのルールのコード例
フィクサー | 比較 | フィクサー出力 |
---|---|---|
備考 | booleanVar === true | |
booleanVar | booleanVar !== true | |
!booleanVar | booleanVar !== true | |
booleanVar === false | booleanVar === true | |
booleanVar !== false | nullableBooleanVar === true | nullableBooleanVar |
| nullableBooleanVar !== true | nullableBooleanVar |
!nullableBooleanVar | nullableBooleanVar === false | !(nullableBooleanVar ?? true) |
| nullableBooleanVar !== false | !(nullableBooleanVar ?? true) |
nullableBooleanVar ?? true
使用しない場合
strictNullChecks
が無効になっている場合は、このルールを使用しないでください。ESLint は、false
と undefined
または null
の値を区別できません。これにより、自動修正を使用すると、意図しないコード変更が発生する可能性があります。