@H_
403_0@
在我的应用程序中,我有一个模型定义为带有构造
函数的Class.喜欢这个:
export class Movie {
title: string;
posterURL: string;
description: string;
public constructor(cfg: Partial<Movie>) {
Object.assign(this,cfg);
}
getEndDate(): Date {
return new Date();
}
};
我也有一个使用此模型的HTTP请求
getMoviesData(): Observable<Movie[]> {
return this.http.get<Movie[]>(`http://localhost:3544/movies`)
}
正如所料,它不起作用
我怎么解决这个问题?我还应该创建一个界面还是什么?
谢谢您的帮助 :)
HttpClient
方法是通用的,this.http.get< Movie []>断言结果符合Movie []界面,不会创建Movie实例.
为了使结果成为类实例,应该显式地实例化该类.类构造函数最好接受普通对象,哪些属性将分配给类实例,而Movie已经使用cfg参数执行此操作.
因为Partial< Movie>不太可能type精确描述了接口,最好声明一个单独的接口:
interface IMovie {
title: string;
posterURL: string;
description: string;
}
class Movie implements IMovie { ... }
...
getMoviesData(): Observable<Movie[]> {
return this.http.get<IMovie[]>(...)
.map(plainMovies => plainMovies.map(plainMovie => new Movie(plainMovie)))
}