You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESLint提示将let改为const时如何保留变量可修改特性

报错原因

ESLint的prefer-const规则校验逻辑为:变量声明完成后,只要不存在重新赋值的操作,就必须使用const声明,和变量是否在声明时同步初始化无关。
当前代码中isChecked虽然是先声明、后单独赋值,但赋值操作完成后从未被修改,因此触发规则报错,导致husky提交钩子拦截。

修复方法

如果是当前代码这种变量未被重新赋值的场景,直接运行ESLint的--fix自动修复命令即可自动修正代码,不需要手动调整。优先使用符合lint规范的写法,无特殊需求不要绕过规则校验。

  • 方案一:合并声明与赋值语句,使用const声明变量
    这是最推荐的写法,const可以明确标识变量不会被重新赋值,降低代码阅读成本,优化后代码如下:
export class CheckboxConfigureComponent {

@Input() selectedProperty: DateRowConfigDto | LabelRowConfigDto | EnumRowConfigDto
@Output() filterEvent = new EventEmitter<boolean>()

constructor() {
}

updateFilter(): void {
    const isChecked = Boolean(this.selectedProperty.visible)
    this.filterEvent.emit(isChecked)
}
}

你也可以保留原有的三元表达式this.selectedProperty.visible ? true : false,和Boolean()转换、!!转换的效果完全一致,都能通过校验。

  • 方案二:如果后续逻辑确实需要重新修改isChecked的值,可临时绕过规则
    如果当前代码只是未写完,后续确实存在对isChecked重新赋值的逻辑,可以在变量声明行上方添加规则豁免注释,避免校验拦截:
updateFilter(): void {
    // eslint-disable-next-line prefer-const
    let isChecked: boolean;
    isChecked = this.selectedProperty.visible ?  true : false
    // 后续可新增isChecked重新赋值的逻辑
    this.filterEvent.emit(isChecked)
}

提示:如果没有明确的重新赋值需求,不要随意添加豁免注释,会破坏lint规则的约束意义。

内容的提问来源于stack exchange,提问作者Artamiel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 08:18:17