在我的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
。根据here,此规则将忽略与指定模式匹配的变量和导入名称。模式是正则表达式,^_
表示以_
开头的任何字符串。
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
应该公开的原因,即使你不在模板中使用它。
资料来源: