快速了解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
返回带有用户对象的Observable数组。 username
不是该Object的成员,因此我使用此括号表示法,因为点符号会出错。显然,我最终会将Map函数转换为单独的函数,以实现可测试性/清晰度。
如何正确处理此映射/重映射/转换?
答案 0 :(得分:0)
你给自己带来了太多麻烦。
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来告诉你你的错误在哪里!