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

