如何配置ESLint jsdoc规则识别带下划线前缀的未使用参数
解决方案
冲突本质是两个规则的校验逻辑差:未使用参数规则允许前置下划线标记忽略检查,而eslint-plugin-jsdoc的参数名校验默认要求JSDoc声明的参数名和函数实际参数名完全一致。两种方案都可以在不禁用任何规则的前提下满足要求:
方案1:无配置代码调整(推荐)
不需要修改任何ESLint规则,只要在空实现中用void关键字显式标记参数为故意不使用即可,无需给参数加下划线前缀。TS、JS的未使用参数校验规则都会认可这种标记方式,不会抛出报错。
修改后的代码如下:
/** * Set the outer alternative number for this context node. Default * implementation does nothing to avoid backing field overhead for * trees that don't need it. Create * a subclass of ParserRuleContext with backing field and set * option contextSuperClass. * * @param altNumber The alt number to set. */ public setAltNumber = (altNumber: number): void => { void altNumber; };
该方案的优势:
- 参数名和JSDoc声明完全一致,不会触发任何JSDoc参数校验错误
void altNumber属于无副作用的标记语句,会被编译压缩工具完全优化,不会产生额外运行时开销- 语义明确,其他开发者可以直接识别出这是接口定义要求保留、当前空实现故意不使用的参数,子类重写时也不需要额外调整参数名
方案2:调整JSDoc规则配置适配下划线前缀
如果希望保留前置下划线的参数命名习惯,可以调整jsdoc/check-param-names规则配置,让其自动忽略参数名的前置下划线,匹配JSDoc中不带下划线的同名参数。
注意:负责校验JSDoc参数名和实际参数名是否匹配的是
jsdoc/check-param-names规则,不是jsdoc/require-param;jsdoc/require-param仅负责检查是否漏写参数的JSDoc声明,不需要额外修改配置。
在ESLint配置文件中添加如下规则配置即可:
// .eslintrc.js 配置示例 module.exports = { rules: { // 原有未使用参数规则配置保持不变,例如: // "@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_" }], "jsdoc/check-param-names": ["error", { allowLeadingUnderscore: true, // 允许匹配时忽略参数名前置下划线 }], } };
配置完成后,原有代码(参数为_altNumber,JSDoc写@param altNumber)会直接通过两个规则的校验,不需要修改业务代码。
内容的提问来源于stack exchange,提问作者Mike Lischke
相关产品推荐
相关产品推荐

