语法的目的/行为是什么(<any> new Classname)

时间:2017-01-09 23:29:29

标签: typescript

let instance = new ClickerApp((<any> new PlatformMock), (<any> new MenuMock));

是来自https://github.com/lathonez/clicker/blob/master/src/app/app.spec.ts

的示例

这是演员吗?这是怎么回事?

1 个答案:

答案 0 :(得分:2)

它被称为Type Assertion

  

之所以没有被称为&#34;类型铸造&#34;是铸造通常意味着某种运行时支持。但是,类型断言纯粹是一个编译时构造,也是一种为编译器提供关于如何分析代码的提示的方法。

在您的情况下,您传递的是模拟对象而不是实际对象。
any允许不安全的断言,因为它与所有类型兼容,因此编译器不再抱怨类型。但是,您会错过编译时类型检查。在这种情况下,更好的方法是使用interface(结构子类型,也称为鸭型)和DI。