如何配置ESLint规则捕获误将赋值=写为全等===的代码错误
检测独立语句中误写
===代替赋值的ESLint方案 原生内置规则(无需安装第三方插件)
ESLint核心自带的no-unused-expressions规则可完全覆盖该检测场景。
误写的x === 10;属于独立存在的全等比较表达式:执行后既不会修改变量值,也不会将比较结果交付给任何业务逻辑、产生可观测的副作用,属于典型的无效未使用表达式,开启该规则后会直接抛出错误。
推荐配置:
{ "rules": { "no-unused-expressions": ["error", { "allowShortCircuit": false, "allowTernary": false, "allowTaggedTemplates": false }] } }
该规则不会误报合法的比较逻辑:位于if条件、三元表达式、逻辑短路判断、函数入参、return语句中的===比较不会被拦截,仅针对作为独立语句存在、无实际运行效果的表达式告警,完全匹配误将赋值写为全等比较的问题场景。
若项目使用TypeScript,替换为同功能的@typescript-eslint/no-unused-expressions规则即可,该版本适配TS语法,不会对合法的类型相关表达式产生误报。
严格场景增强方案
如果需要更高的检测精准度,避免其他合法表达式的放行配置漏检该类错误,可通过ESLint内置的no-restricted-syntax自定义语法检测规则,专门拦截独立成行的相等/全等比较:
{ "rules": { "no-restricted-syntax": ["error", { "selector": "ExpressionStatement > BinaryExpression[operator='===']", "message": "独立语句中的===比较无实际效果,检查是否误将赋值=写为全等===" }, { "selector": "ExpressionStatement > BinaryExpression[operator='==']", "message": "独立语句中的==比较无实际效果,检查是否误将赋值=写为相等==" } ] } }
该自定义规则仅对独立成句的==/===比较告警,不会影响其他合法写法,常规业务场景下误报率为0。
补充说明
无需额外安装专门检测比较操作符的第三方插件,这类错误的核心特征是代码执行后无任何有效输出,上述原生规则已经可以实现零漏报的检测效果。
内容的提问来源于stack exchange,提问作者Ian Steffy
相关产品推荐
相关产品推荐

