🐞 bug报告
受影响的包
这个问题是由 @angular/core 包引起的。
是否为回归?
否
描述
InputDecorator
作为函数调用时,其返回类型为 any
。因此,使用 @Input()
导致违反了 TSLint 的 no-unsafe-any 规则。
🔬 最小复现
使用 @Input()
并运行 TSLint,将规则 "no-unsafe-any" 设置为 trueMyComponent.ts
export class MyComponent {
@Input() public someInput: string;
}
Tslint.json
no-unsafe-any: true
🌍 你的环境中
Angular 版本:
TSLint: 5.11.0
Typescript: 3.1.3
6条答案
按热度按时间8xiog9wr1#
这与#26942相似,来自palantir/tslint#3784。
nxagd54h2#
#26942 已关闭,但 @input 和 @output 装饰器仍然存在这个问题。
示例
xa9qqrwz3#
实际上,有多个装饰器存在相同的问题:
@Input()
、@Output()
、@HostBinding()
和@HostListener()
。我尝试过更新类型,但这有点棘手,因为我们需要能够支持普通属性,但也要支持设置器和获取器,而且我无法确定这些情况下的正确返回类型。
gzszwxb44#
是的,这种奇怪的行为我只在最近几天看到过。任何装饰器像这样触发错误似乎都很奇怪。我猜这会导致很多人关闭linting或编写丑陋的tslint禁用注解:(
wbrvyc0a5#
是的,使用Angular 9.1、TypeScript 3.8和tslint 6.0.0-beta0仍然在进行中。
y3bcpkx16#
@AndrewKushnir@kara Can someone from community send a PR for this? I'm interested in working on this.
Just to be sure about the changes, taking the
@Input
as an example...this:
��
angular/packages/core/src/metadata/directives.ts
Line 688 in d1ea1f4
| | (bindingPropertyName?: string): any; |
should be
(bindingPropertyName?: string): TypeDecorator;
?and
angular/packages/core/src/metadata/directives.ts
Line 689 in d1ea1f4
| | new(bindingPropertyName?: string): any; |
should be
new(bindingPropertyName?: string): Input;
?