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

如何为TypeScript类型声明禁用ESLint的`require-jsdoc`规则,或至少为单个属性禁用该规则

如何为TypeScript类型声明禁用ESLint的require-jsdoc规则,或至少为单个属性禁用该规则

我完全懂你的感受——require-jsdoc在大多数时候确实能帮我们保持代码文档的一致性,但碰到TypeScript的类型和接口时,连每个属性都要加JSDoc实在是太啰嗦了,毕竟TS类型本身就自带了大部分文档信息,没必要画蛇添足。

这里有几个实用的解决方案,帮你解决这个问题:

方案一:全局配置,彻底告别类型属性的JSDoc要求

如果你用的是原生ESLint的require-jsdoc规则,可以通过调整它的contexts选项,排除TypeScript类型相关的AST节点。在你的ESLint配置文件(比如.eslintrc.js)里这么写:

module.exports = {
  // 其他配置项...
  rules: {
    "require-jsdoc": [
      "warn", // 这里保持你原来的规则级别,比如"error"
      {
        contexts: [
          // 保留你需要检查的代码结构,比如函数、类
          "FunctionDeclaration",
          "FunctionExpression",
          "ClassDeclaration",
          // 排除TS接口和类型别名的属性节点
          "TSPropertySignature"
        ]
      }
    ]
  }
};

这样配置后,ESLint就不会再对TS类型/接口里的每个属性要求JSDoc了。如果你连类型/接口本身的JSDoc要求也想去掉,直接把TSInterfaceDeclaration和TSTypeAliasDeclaration从contexts里移除就行。

方案二:用TS专属ESLint规则更精准控制

如果你项目里已经引入了@typescript-eslint/eslint-plugin,更推荐用它提供的@typescript-eslint/require-jsdoc规则,这个规则对TS语法支持更好,配置也更灵活:

module.exports = {
  // 其他配置项...
  rules: {
    "@typescript-eslint/require-jsdoc": [
      "warn",
      {
        requireFor: [
          "function",
          "class",
          // 如果你还想保留对类型/接口本身的JSDoc要求,就保留下面两行
          // "typeAlias",
          // "interface"
          // 注意:不要加"property",这样就不会要求属性的JSDoc了
        ]
      }
    ]
  }
};

通过requireFor选项,你可以精准指定哪些结构需要强制JSDoc,完全跳过类型属性的检查。

方案三:局部临时禁用(适合特殊场景)

如果只是偶尔需要跳过某个类型或属性的检查,用ESLint的单行注释就可以解决:

  • 跳过整个类型的所有检查:
// eslint-disable-next-line require-jsdoc
export type I18nProviderProps = {
  locale?: string
  children: React.ReactNode
}
  • 只跳过单个属性的检查:
export type I18nProviderProps = {
  // eslint-disable-next-line require-jsdoc
  locale?: string
  children: React.ReactNode
}

这种方式适合一些特殊的、需要灵活处理的场景,但长期来看还是全局配置更省心。

备注:内容来源于stack exchange,提问作者XML

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 08:14:32