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

如何在TypeScript中为未加JSDoc的公共函数/变量生成Linting错误?

解决方案

你可以通过配置eslint-plugin-jsdoc中require-jsdoc规则的contexts选项,精准指定要检测的AST节点,从而实现对类的公共方法/变量的注释检查,无需自定义插件。

核心思路

publicOnly: true确实只针对导出的模块成员,但contexts选项允许你通过AST选择器,直接定位类中未标记为private/protected的公共成员,强制要求它们添加JSDoc注释。

具体配置示例

以下配置会检测类的所有公共实例/静态方法、属性:

"jsdoc/require-jsdoc": [
  "error",
  {
    "contexts": [
      // 类的公共实例方法(未标记 private/protected)
      "MethodDefinition[accessibility!=\"private\"][accessibility!=\"protected\"]",
      // 类的公共实例属性(未标记 private/protected)
      "ClassProperty[accessibility!=\"private\"][accessibility!=\"protected\"]",
      // 类的公共静态方法
      "MethodDefinition[static=true][accessibility!=\"private\"][accessibility!=\"protected\"]",
      // 类的公共静态属性
      "ClassProperty[static=true][accessibility!=\"private\"][accessibility!=\"protected\"]"
    ]
  }
]

适配下划线约定的私有成员

如果你的项目用下划线前缀(比如_privateMethod)标记私有成员而非ES6的private修饰符,可以调整选择器排除这类成员:

"jsdoc/require-jsdoc": [
  "error",
  {
    "contexts": [
      {
        "context": "MethodDefinition[accessibility!=\"private\"][accessibility!=\"protected\"]",
        "exemptedBy": [{"key": {"name": {"notMatch": "^_"}}}]
      },
      {
        "context": "ClassProperty[accessibility!=\"private\"][accessibility!=\"protected\"]",
        "exemptedBy": [{"key": {"name": {"notMatch": "^_"}}}]
      }
    ]
  }
]

说明

  • 配置后,只要类中的成员未被标记为私有/保护,且未添加JSDoc注释,ESLint就会抛出错误。
  • 该方案不需要额外插件,完全基于eslint-plugin-jsdoc的原生能力实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:47:13