如何使用@typescript-eslint/naming-convention规则强制catch变量命名一致性?
如何使用@typescript-eslint/naming-convention规则强制catch变量命名一致性?
嘿,刚好我之前也琢磨过这个需求——不想额外装其他插件,就用@typescript-eslint自带的规则来搞定catch变量的命名统一对吧?其实完全可以实现,核心是找对@typescript-eslint/naming-convention规则里的精准选择器。
你只需要在ESLint配置文件的rules部分,给@typescript-eslint/naming-convention添加针对catch块参数的规则配置:
{ "@typescript-eslint/naming-convention": [ "error", // 保留你已有的其他命名规则... { selector: "CatchClauseParameter", format: ["camelCase"], custom: { regex: "^error$", match: true }, message: "Catch块的参数必须命名为'error'" } ] }
我给你拆解下这个配置的关键点:
selector: "CatchClauseParameter":这个选择器是核心,它会精准匹配所有catch语句块里的参数,不会误影响其他变量的命名规则custom.regex: "^error$":通过正则强制要求变量名必须严格等于error,多一个字符、少一个字符或者换个拼写都不行message:可以自定义报错提示,让团队成员一眼就知道要改成啥名字
举个实际的例子,如果你写了这样的代码:
try { // 业务逻辑代码 } catch (ex) { // 错误处理逻辑 }
ESLint就会抛出你自定义的错误提示,要求把ex改成error;而如果写成catch (error) { ... }就完全符合规则,不会报错。
对了,你提到的那个第三方插件确实有类似规则,但既然我们已经在用@typescript-eslint的规则集,直接用内置的选择器配置显然更省心,不用额外引入依赖。
备注:内容来源于stack exchange,提问作者Jacob Morrison
相关产品推荐
相关产品推荐

