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

是否有ESLint规则推荐使用a?.b?.c替代a.b.c避免属性读取报错

满足需求的ESLint规则方案

方案1:适配lodash/get统一规范

直接使用eslint-plugin-lodash插件下的prefer-get规则,完全匹配你的两个要求:

  • 可自定义配置检测的嵌套属性访问深度,设置minimumDepth: 2即可精准扫描所有a.b.c这类≥2层的点属性读取写法
  • 触发规则时会直接提示你将对应写法替换为_.get(a, 'b.c')的安全形式,支持一键自动修复

规则配置示例:

{
  "plugins": ["lodash"],
  "rules": {
    "lodash/prefer-get": ["error", {
      "minimumDepth": 2
    }]
  }
}

方案2:适配ES6+可选链统一规范

如果团队更倾向用原生?.可选链作为安全读取方案,可搭配以下规则实现需求:

  • JS项目:开启ESLint核心规则prefer-optional-chaining + eslint-plugin-unicorn的no-unsafe-member-access规则
  • TS项目:开启@typescript-eslint/no-unsafe-member-access + prefer-optional-chaining规则

规则会自动检测可能存在访问失败风险的多层属性读取逻辑,提示你修改为a?.b?.c的安全写法。

自定义严格检测方案

如果需要强制限制所有场景下的深层点访问,不管类型是否定义,可使用eslint-plugin-no-nested-dot-access插件,配置最大允许的点访问深度为1,所有超过1层的点访问都会触发提示,要求替换为安全属性读取方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:06:10