no-unused-variable TSLint 规则不适用于 private @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
public因为封装。
解决这个问题的推荐方法是什么?
据我所知,你有两个选择。
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
。因此,在语义上,它是public。这与 @Input
应该是 public 的原因相同,即使您没有在模板中使用它也是如此。
来源:
在我的 TSLint 文件中,我有:
"no-unused-variable": true
在我的组件中,我有时有:
// tslint:disable-next-line:no-unused-variable
@HostBinding('class') private classes = 'my-theme';
因为classes
是私有的,TSLint抱怨,所以我每次都必须禁用TSLint。
我不想做@HostBinding
public因为封装。
解决这个问题的推荐方法是什么?
据我所知,你有两个选择。
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
。因此,在语义上,它是public。这与 @Input
应该是 public 的原因相同,即使您没有在模板中使用它也是如此。
来源: