繁体   English   中英

打字稿:任何类型的断言,这是什么意思?

[英]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手册将其描述为“选择退出类型检查”

假设IMyTypethis.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.

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