在 Angular 项目中查找无用的依赖注入

Posted

技术标签:

【中文标题】在 Angular 项目中查找无用的依赖注入【英文标题】:Find useless dependencies injection in Angular project 【发布时间】:2021-12-31 04:59:48 【问题描述】:

我尝试使用 Eslint 在我的 Angular/Ionic 组件中查找无用的依赖项注入。

例子:

import  BasicDataService  from '../../providers/basic-data.service';

@Component(
    selector: 'app-login',
    templateUrl: './login.page.html',
    styleUrls: ['./login.page.scss'],
)
export class LoginPage implements OnInit 
    constructor(
        private bd: BasicDataService,
    ) 

bd这个属性是在构造函数中定义的但是没有用到,Eslint怎么会高亮呢?

到目前为止,我的 .eslintrc.json 是:


    "env": 
        "browser": true,
        "es2021": true
    ,
    "extends": [
        "eslint:recommended",
        "plugin:@typescript-eslint/eslint-recommended",
        "plugin:@typescript-eslint/recommended"
    ],
    "parser": "@typescript-eslint/parser",
    "parserOptions": 
        "ecmaVersion": 12,
        "sourceType": "module"
    ,
    "plugins": ["@typescript-eslint"],
    "rules": 



在之前的一个项目中,我使用了规则@typescript-eslint/no-unused-vars-experimental,但最近似乎是it has been removed。

谢谢!

【问题讨论】:

您可以@typescript-eslint/no-unused-vars 代替@typescript-eslint/no-unused-vars-experimental,正如您提到的那样,它已被贬低和删除。 感谢您的回答,是的,我尝试了"@typescript-eslint/no-unused-vars": 2,但 db 周围没有出现任何内容 @typescript-eslint/no-unused-vars 默认设置为启用。所以你可以检查你的编译器 eslint 服务器是否正在运行。您可以为此检查调试控制台(用于 vs 代码)。 是的,Eslint 正在运行,我可以看到 ESLint 在 Sublime Text 和 VS Code 中发现的其他错误,包括其他未使用的变量(比如简单的: const aa = 1; )。当我在终端中执行 Eslint 时,它工作正常,发现了我期望的错误,除了那些未使用的依赖注入。 【参考方案1】:

没有 lint ESLint 规则可以分析 TS 的私有类属性。

TS 本身可以通过其noUnusedLocals 编译器选项执行此操作。但请注意,这也将匹配未使用的变量。

https://www.typescriptlang.org/tsconfig#noUnusedLocals

【讨论】:

谢谢,至少我可以让 Typescript 找到未使用的私有类属性,这很有帮助。 对未使用的私有属性进行 linting 的困难在于它们不是真正的私有属性,并且有一种方法可以使用方括号语法 (myClass['privateProp']) 在类之外访问它们 - 这这就是为什么最好留给可以对此类案例进行丰富类型分析的 TS!

以上是关于在 Angular 项目中查找无用的依赖注入的主要内容,如果未能解决你的问题,请参考以下文章

Angular 1.5 组件依赖注入

在依赖注入环境(如 Spring Boot)中创建设计模式是不是无用?

Angular2.3 自定义库和依赖注入

Angular 2 中的依赖注入在使用内联注入器和构造器注入时创建多个实例

Spring 依赖注入原理

Spring(06)IOC 依赖注