跳至主要内容

no-unnecessary-boolean-literal-compare

禁止对布尔字面量进行不必要的相等比较。

🔒

"plugin:@typescript-eslint/strict-type-checked" 中扩展 ESLint 配置文件 可以启用此规则。

🔧

此规则报告的一些问题可以通过 --fix ESLint 命令行选项 自动修复。

💭

此规则需要 类型信息 才能运行。

将布尔值与布尔字面量进行比较是不必要的:这些比较会产生相同的布尔值。直接使用布尔值,或通过一元否定 (!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 值。在使用自动修复时,这会导致意外的代码更改。


类型检查的 lint 规则比传统的 lint 规则更强大,但也需要配置 类型检查的 lint。如果您在启用类型检查的规则后遇到性能下降,请参阅 性能故障排除

资源