let instance = new ClickerApp((<any> new PlatformMock), (<any> new MenuMock));
是来自https://github.com/lathonez/clicker/blob/master/src/app/app.spec.ts
的示例这是演员吗?这是怎么回事?
答案 0 :(得分:2)
它被称为Type Assertion
之所以没有被称为&#34;类型铸造&#34;是铸造通常意味着某种运行时支持。但是,类型断言纯粹是一个编译时构造,也是一种为编译器提供关于如何分析代码的提示的方法。
在您的情况下,您传递的是模拟对象而不是实际对象。
any
允许不安全的断言,因为它与所有类型兼容,因此编译器不再抱怨类型。但是,您会错过编译时类型检查。在这种情况下,更好的方法是使用interface(结构子类型,也称为鸭型)和DI。