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

craco+TS项目配置ESLint后报@typescript-eslint/no-unused-expressions错误问询

问题原因

  1. 仅关闭了@typescript-eslint/no-unused-expressions规则,但ESLint原生的no-unused-expressions规则仍处于开启状态,该规则不识别TypeScript可选链语法,会把?.开头的函数调用误判为未使用的无效表达式
  2. ESLint配置修改后未清除缓存,旧校验规则持续生效
  3. 旧版本的@typescript-eslint/eslint-plugin对可选链调用的判断存在缺陷,即使关闭对应规则也可能偶发报错

可行解决方案

  • 方案1:完整关闭相关规则(最快捷)

    在.eslintrc.js的rules字段中同时关闭原生和TS版本的规则:

    rules: {
      // 保留原有其他规则,新增以下两行配置
      "no-unused-expressions": "off",
      "@typescript-eslint/no-unused-expressions": "off"
    }
    

    配置修改后删除项目下的node_modules/.cache目录清除ESLint缓存,重启开发服务即可生效。

  • 方案2:保留规则,仅放行可选链调用场景

    如果不想完全关闭规则校验,可以配置规则参数允许可选链类表达式:

    rules: {
      "no-unused-expressions": "off",
      "@typescript-eslint/no-unused-expressions": ["error", {
        "allowShortCircuit": true,
        "allowTernary": true,
        "allowOptionalChain": true // 核心配置,允许可选链表达式
      }]
    }
    
  • 方案3:修改代码规避校验

    不想调整ESLint配置的情况下,把可选链写法改为常规空判断即可:

    if (this.formRef.current) {
      this.formRef.current.setFieldsValue({
        ...this.props.tenantStore.tenantModel,
      });
    }
    // resetFields调用部分做相同修改即可
    
  • 方案4:升级依赖修复识别缺陷

    若为依赖版本过低导致的语法识别问题,升级相关包到最新稳定版即可:

    npm install @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest eslint@latest --save-dev
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:39:01