在这里使用Angular 4,5提高速度,并想知道将JSON响应映射到强大的键入对象/模型的最佳实践。
服务:
getUsers(): Observable<User[]> {
return this.http.get<User[]>('http://localhost:8000/users/')
.pipe(
tap(users => this.log(`fetched users`)),
map(response => {
return response.map((res) =>
{
return new Hero(
response['username'],
response.email);
});
}),
catchError(this.handleError('getUsers', []))
);
}
接口/型号:
export interface IUser {
id: number;
name: string;
email: string;
}
export class Hero implements User {
public id: number;
constructor(public name: string,
public email: string) {
}
}
getUsers
返回带有用户对象的可观察数组。username
不是该对象的成员,因此我使用此括号表示法,因为点表示法会出现错误。显然,我最终会将该地图功能带入单独的功能,以实现可检验性/清晰度。
如何正确处理此映射/重新映射/转换?
你给自己太多麻烦。
export interface IUser {
id: number;
username: string;
email: string;
}
getUsers(): Observable<User[]> {
return this.http.get<User[]>('http://localhost:8000/users/')
.catch(err => this.handleError('getUsers', []));
}
您可以去,您的响应已输入。
请参阅Typescript作为开发帮助。在编码过程中进行课程非常有用,但是一旦您构建了应用程序,所有这些都会汇编为JavaScript,从而"丢失"所有类和属性。
您不应该为此思考太多。只是为了最简单,它应该起作用。否则,您仍然有一个TS Linter告诉您您的错误在哪里!