我正在学习Angular2。在DI页面中,有用于模拟的示例代码。https://angular.io/docs/ts/latest/guide/dependency-injection.html
这是什么意思?
let mockService = <HeroService> {getHeroes: () => expectedHeroes }它看起来像从mockService函数定义HeroService函数。
<HeroService>是什么?是<HeroService>铸造吗?
let expectedHeroes = [{name: 'A'}, {name: 'B'}]
let mockService = <HeroService> {getHeroes: () => expectedHeroes }
it('should have heroes when HeroListComponent created', () => {
let hlc = new HeroListComponent(mockService);
expect(hlc.heroes.length).toEqual(expectedHeroes.length);
});发布于 2016-10-02 06:48:28
在JavaScript和TypeScript中,{a: b}是一个对象文本。它定义了一个具有一个属性a的对象,其值为b。
所以
{getHeroes: () => expectedHeroes }是一个具有一个名为getHeroes的属性的对象,其值为() => expectedHeroes() => expectedHeroes。因此,该值是一个不带参数的函数(()),并返回值expectedHeroes。
<HeroService>被称为类型断言
有时,您最终会遇到比TypeScript更了解某个值的情况。通常,当您知道某个实体的类型可能比其当前类型更具体时,就会发生这种情况。 类型断言是一种告诉编译器“相信我,我知道我在做什么”的方法。类型断言类似于在其他语言中强制转换的类型,但不执行数据的特殊检查或重构。它不影响运行时,完全由编译器使用。
https://stackoverflow.com/questions/39813955
复制相似问题