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

Angular项目中ESLint报guard-for-in错误的问题咨询

解决ESLint guard-for-in报错问题

ESLint的guard-for-in规则要求for-in循环的全部代码块必须包裹在检查对象自身属性的if语句中,目的是避免遍历到原型链上的继承属性。你当前的代码里isEmptyObject = true语句位于hasOwnProperty判断之外,违反了这条规则。

修改后的代码

private calculateFieldValue(value: any): any {
    let isEmptyObject = true;
    if (value && Array.isArray(value) && value.length === 1 && value[0]) {
        for (const subAttr in value[0]) {
            if (value[0].hasOwnProperty(subAttr)) {
                if (value[0][subAttr]) {
                    isEmptyObject = false;
                    break;
                }
            }
        }
    }
    return isEmptyObject ? null : value;
}

关键修改说明

  • 调整isEmptyObject初始值为true,逻辑改为只要对象有一个自身属性不为空,就标记为非空对象,更贴合业务场景
  • 将for-in循环的所有执行代码包裹在hasOwnProperty判断块内,完全满足guard-for-in规则要求
  • 避免了原型链上的属性干扰判断结果,代码逻辑更健壮

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:24:33