ESLint规则no-useless-constructor如何忽略含属性赋值的构造函数?
ESLint规则no-useless-constructor如何忽略含属性赋值的构造函数?
这个问题我之前写NestJS项目时也踩过坑!核心原因是原生ESLint的no-useless-constructor规则根本没识别TypeScript的参数属性语法糖——就是你在构造函数参数前加private/public/protected的写法,TypeScript会自动把这个参数转换成类的实例属性,这种构造函数完全不是“无用”的,只是原生ESLint规则没适配TS的这个特性而已。
给你两种解决方案,推荐第一种:
彻底适配TypeScript,替换规则
用@typescript-eslint/no-useless-constructor代替原生的ESLint规则,这个是TypeScript专属的ESLint插件规则,能准确识别参数属性的场景,不会误判NestJS里的依赖注入构造函数。
只需要在你的ESLint配置文件(比如.eslintrc.js或.eslintrc.json)里修改规则:{ "rules": { // 关掉原生规则 "no-useless-constructor": "off", // 开启TS专属的规则 "@typescript-eslint/no-useless-constructor": "error" } }这样以后所有NestJS里的依赖注入构造函数都不会再被误报了,一劳永逸。
临时忽略单个构造函数(不推荐)
如果只是临时解决某个文件的问题,可以在构造函数上方加ESLint忽略注释:// eslint-disable-next-line no-useless-constructor constructor(private service: MyService) {}但这种方法太零散,项目大了不好维护,还是推荐第一种方案。
备注:内容来源于stack exchange,提问作者TruMan1
相关产品推荐
相关产品推荐

