[英]Typescript: Type assertion as any, what does this mean?
我试图了解一段代码是如何工作的。 我以前见过类型断言,但由于某种原因,我无法解决这个问题。
(this.whatever as any).something([]);
较大部分的代码:
resetThis(): void {
if (this.whatever) {
(this.whatever as any).something([]);
}
}
尝试运行此块时出现错误: this.whatever.someting is not a function
您的代码等效于以下普通JavaScript代码:
this.whatever.something([]);
当您在TypeScript中说as any
时,是在告诉编译器忽略前面表达式的前一个类型,而是将其视为“ any
类型。 因此,在您的情况下,您要告诉编译器this.whatever
类型为any
。
TypeScript中的any
类型基本上是一种类型,其意思是“我们对该变量的真正含义一无所知,所以让我对它进行任何操作”。 TypeScript手册将其描述为“选择退出类型检查” 。
假设IMyType
。 this.whatever
类型为IMyType
。
附:
IMyType {
prop1: string;
prop2: string;
}
因此,如果您调用this.whatever.something([])
,编译器会发出尖叫。 因为something([])
函数未在IMyType
定义。
使用as any
会告诉该特定的语句,就应考虑编译器this.whatever
为类型的any
。 这意味着它可以具有所需的任何属性或方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.