В Angular 7 у меня есть следующая модель сообщения:
export interface PostModel {
id: number;
created: Date;
published: boolean;
title: string;
}
И у меня есть следующий метод обслуживания Angular для получения сообщений:
public getPosts(): Observable<PostModel[]> {
return this.httpClient.get<PostModel[]>(url).pipe(
map((post: PostModel)) => {
return {
id: post.id,
created: new Date(post.created),
published: post.published,
title: post.title
};
})
};
Я преобразовываю ответ API вPostModel
вручную ...
Это потому, что тип created
имеет тип Date, а Angular не преобразует его автоматически.
Я хотел бы повторно использовать код отображения в различных частях моего кода:
map((post: PostModel)) => return mapPostFromJson(post));
Я мог бы преобразовать PostModel в класс и mapPostFromJson в качестве его метода.
Но я бы предпочел, чтобы PostModel
оставался интерфейсом.
Как я могу это сделать?
Обновление
Моя проблема заключается в том, как создать метод mapPostFromJson.Я пытался:
mapPostFromJson(data: any) : PostModel {
return map((post: PostModel) => {
return {
id: post.id,
created: new Date(post.created),
published: post.published,
title: post.title
};
});
}
Эта функция не компилируется ...
Я не уверен, как использовать карту вне трубы ...