【发布时间】:2017-12-15 12:24:50
【问题描述】:
在这里了解 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 不是该对象的成员,所以我使用这个括号表示法,因为点表示法会出错。显然,为了可测试性/清晰性,我最终会将 Map 函数变成一个单独的函数。
如何正确处理这种映射/重映射/转换?
【问题讨论】:
-
您可以直接将其类型转换为
return <IUser>response界面 -
你的意思是
map(response => return <IHero>response),那么username如何映射到name呢?在这个简单的例子中,这基本上就是我的问题。
标签: javascript json angular httpclient observable