类分配中的“as”是什么



我尝试了谷歌并浏览了角度文档,但我不知道我在找什么。

有人会解释这个"as"是什么吗? 我在下面的代码中做错了什么?

我有组件 A 在组件 B 中使用,并且在 b 'as' A 中声明了一个变量。我尝试使用 A 中的函数,但这里发生了错误,因为函数不存在。

A.组件.ts;

...
getValue ():Array<string> {
 return this.filter( elm => elm.length > 5 );
}
...

B.组件.ts;

...
type C = A;
...
public coolArr: C;
printArr(param: any):void{
 coolArr = param as A;
 console.log(coolArr.getValue);
}
...

不知道我在这里做错了什么。

你的函数:

printArr(param: any):void

接受任何类型。它可以是空的,一个对象,一个数组,任何东西。(这就是为什么你不应该在打字稿代码中依赖any。始终键入正确的类型。

coolArr = param as A;

在这里你告诉打字稿编译器:该参数实际上是类型 A 。这样对待它。基本上,你说你比编译器更了解并说:相信我,这将是A型。这在编译时有效。

您现在遇到的错误是运行时问题。 coolArr可能仍然是一个 anyval,因此您的后续期望将不起作用。

最新更新