如何在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
相关产品推荐
相关产品推荐

