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

TypeScript中如何强制对象的方法显式声明返回类型?

问题原因

@typescript-eslint/explicit-function-return-type 默认开启了 allowTypedFunctionExpressions 配置项,规则逻辑为:如果函数/方法所处的位置已经存在显式 TypeScript 类型注解,就跳过该函数的返回类型检查,默认认为类型上下文已经完成了返回值约束。
当你给对象标注Record<string, any>这类带any的宽泛类型时,类型系统不会对对象内部方法的返回值做有效校验,规则又因为对象本身有类型注解直接跳过检查,就出现了漏检。

修复配置

修改ESLint规则配置,关闭所有默认的免检逻辑,实现全场景覆盖:

{
  "rules": {
    "@typescript-eslint/explicit-function-return-type": ["error", {
      "allowTypedFunctionExpressions": false,
      "allowExpressions": false,
      "allowHigherOrderFunctions": false,
      "allowDirectConstAssertionInArrowFunctions": false,
      "allowConciseArrowFunctionExpressionsStartingWithVoid": false
    }]
  }
}

配置说明:

  • 核心配置allowTypedFunctionExpressions: false会强制所有函数、方法不管所处位置有没有类型注解,都必须显式声明返回类型,你提到的Record<string, any>标注对象内部方法漏检的问题会直接解决。
  • 其余几个配置项是规则默认开启的宽松免检逻辑,全部关闭后不会再出现其他场景的漏检。
补充建议
  • 搭配@typescript-eslint/no-explicit-any规则限制代码中any的使用,从根源上避免宽泛类型带来的类型校验漏洞。
  • 个别框架约定、确实不需要写返回类型的特殊场景,使用单行/块级ESLint注释临时禁用规则即可,不要全局放宽配置导致漏检。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:12:20