首页 > 解决方案 > no-unused-variable TSLint 规则不适用于私有 @HostBinding

问题描述

在我的 TSLint 文件中,我有:

"no-unused-variable": true

在我的组件中,我有时会:

// tslint:disable-next-line:no-unused-variable
@HostBinding('class') private classes = 'my-theme';

因为classes是私有的,所以 TSLint 会抱怨,所以我每次都必须禁用 TSLint。

不想@HostBinding因为封装而公开。

解决此问题的推荐方法是什么?

标签: angularangular6encapsulationtslintangular2-hostbinding

解决方案


据我所知,你有两个选择。

1 - 使用protected。自我解释:

@HostBinding('class') protected classes = 'my-theme';

2 - 使用ignore-pattern。此规则将根据此处忽略匹配指定模式的变量和导入名称。该模式是一个正则表达式,^_表示任何以 . 开头的字符串_

tslint.json:

...
"no-unused-variable": [true, {"ignore-pattern": "^_"}]
...

零件:

@HostBinding('class') private _classes = 'my-theme';

奖金

如果您的变量是只读的,您也可以执行其中之一。它不会防止 tslint 错误,但如果您担心封装,它会防止意外修改变量。

@HostBinding('class') private readonly classes = 'my-theme';
@HostBinding('class') private get classes() { return 'my-theme'; }

推荐阅读