我有三种类型
class Media {
private _id: number;
//getters and setters
}
class Serial extends Media {
private _watched_series: number;
//getters and setters
}
class Movie extends Media {
private _watched: boolean;
//getters and setters
}
和后端具有相同的结构。后端返回Array<Media>
,但包含子类型。
我正在尝试:
ListsApi.mediasFromList(list.id).then((response: Response) => {
response.json().then((value: Array<Movie | Serial>) => {
this.setState({medias: value});
});
});
但是当我尝试使用typeof
时,我总是得到object
。
我在做什么错?我正在尝试在媒体fromJson
中写函数以从原始json对象创建对象,但是后来我不明白如何确定原始对象的类型。
预先感谢您的回答。
答案 0 :(得分:0)
在尝试确定原始JSON对象的类型时,必须手动检查对象的属性以测试其是否与特定类型匹配。以下功能可用于确定您的媒体是否为Movie
类型:
isMovie(input: Movie | Serial): input is Movie {
return input.hasOwnProperty('_watched');
}
然后在测试它是Movie
还是Serial
类型时:
if (this.isMovie(media)) {
// media will now be treated as type `Movie`
}