我尝试了谷歌并浏览了角度文档,但我不知道我在找什么。
有人会解释这个"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,因此您的后续期望将不起作用。