“response.json()中的”as“和Hero []”有什么关系?

时间:2016-11-09 04:23:58

标签: angular

有时我可以看到一些代码像这样处理http响应:

f(): Observable<Hero[]> {
    return this.http.get('local.host').map((response: Response) => response.json().data as Hero[]);
}

和Hero是

export class Hero {
    id: number;
    name: string;
}

是什么

r.json().data as Hero[]

意思?

但据我所知,现在没有直接函数将json对象转换为ts对象,关键字“as”用于将json对象转换为自定义ts对象吗?如果是的话,我可以写

var myClass=r.json()  as MyClass;
if(!myClass){
    //error
}

检查json对象是否可以转换为我的自定义类?

2 个答案:

答案 0 :(得分:3)

作为关键字正在投射

r.json().data as Hero[]

来自Server的响应。期望List of Object从服务器返回。 这段代码只是类型转换。

它会将该列表转换为Hero Object数组。 服务器以 json格式

返回值

答案 1 :(得分:2)

正如@HarryNinh所说

  

TypeScript 1.6引入了新的.tsx文件扩展名。这个扩展做了两件事:它在TypeScript文件中启用JSX,它使new as运算符成为转换的默认方式(消除JSX表达式和TypeScript前缀强制转换操作符之间的任何歧义)。例如:

var x = <any> foo;
// is equivalent to:
var x = foo as any;

参考:Typescript 1.6 ChangeLog