繁体   English   中英

no-unused-variable TSLint规则不适用于私有@HostBinding

[英]no-unused-variable TSLint rule does not work with private @HostBinding

在我的TSLint文件中,我有:

"no-unused-variable": true

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

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

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

不想@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'; }

经过一番研究,解决方案就是将其public

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

这是因为从Angular的角度来看,它访问组件,类似于component.classes 因此,从语义上讲,它是公开的。 这就是为什么即使你不在模板中使用@Input应该公开的原因。

资料来源:

https://stackoverflow.com/a/38469573/3481582

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM