返回主要內容

no-unnecessary-boolean-literal-compare

禁止不必要的與布林直值的相等比較。

🔒

擴充功能 "plugin:@typescript-eslint/strict-type-checked" in an ESLint 設定 啟用這條規則。

🔧

這條規則報告的某些問題可使用 ESLint 命令列選項 --fix 自動修正.

💭

此規則需要 輸入 才能執行。

將布林值與布林直值比較是不必要的:這些比較會產生相同的布林值。直接使用布林值或使用一元否定運算 (!value) 會比較簡潔明瞭。

此規則可確保您不會包含不必要的與布林直值的比較。如果比較檢查的內容是僅含有 boolean 型別的變數與布林直值,則此比較會被視為不必要。如果型別是布林值的聯集(string | booleanSomeObject | boolean 等),則此比較不會被視為不必要。

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-unnecessary-boolean-literal-compare": "error"
}
};

在遊樂場嘗試此規則 ↗

範例

註解

在此頁面上,範例中僅使用嚴格相等(===!==)。然而,規則的實作並不區分嚴格和寬鬆相等。如果下面任一範例使用 === 而使用 ==,則處理方式相同,而如果使用 !== 而使用 !=,則處理方式也會相同。

declare const someCondition: boolean;
if (someCondition === 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,
},
];

此規則總是會檢查布林變數和布林文字之間的比較。預設情況下會檢查可為空的布林變數和布林文字之間的比較。

allowComparingNullableBooleansToTrue

使用 { allowComparingNullableBooleansToTrue: false } 的此規則的程式碼範例

declare const someUndefinedCondition: boolean | undefined;
if (someUndefinedCondition === true) {
}

declare const someNullCondition: boolean | null;
if (someNullCondition !== true) {
}
在遊樂場開啟

allowComparingNullableBooleansToFalse

使用 { allowComparingNullableBooleansToFalse: false } 的此規則的程式碼範例

declare const someUndefinedCondition: boolean | undefined;
if (someUndefinedCondition === false) {
}

declare const someNullCondition: boolean | null;
if (someNullCondition !== false) {
}
在遊樂場開啟

修復程式

比較修復程式輸出註解
booleanVar === truebooleanVar
booleanVar !== true!booleanVar
booleanVar === false!booleanVar
booleanVar !== falsebooleanVar
nullableBooleanVar === truenullableBooleanVar僅當 allowComparingNullableBooleansToTrue 選項是 false 時才檢查/修正
nullableBooleanVar !== true!nullableBooleanVar僅當 allowComparingNullableBooleansToTrue 選項是 false 時才檢查/修正
nullableBooleanVar === false!(nullableBooleanVar ?? true)僅當 allowComparingNullableBooleansToFalse 選項是 false 時才檢查/修正
nullableBooleanVar !== falsenullableBooleanVar ?? true僅當 allowComparingNullableBooleansToFalse 選項是 false 時才檢查/修正

何時不使用它

strictNullChecks 已停用時,請勿使用此規則。ESLint 無法區分 falseundefinednull 值。在使用自動修復時,這會導致意外的程式碼變更。


類型檢查的程式碼檢查規則比傳統的程式碼檢查規則更強大,但同時需要設定 類型檢查程式碼檢查。如果您在啟用類型檢查的規則後遇到效能下降,請參閱 效能疑難排解

資源