我有以下界面
export interface Site {
id: number;
path: string;
siteLink: string;
features: Feature[];
}
export interface SiteResponse {
data: Site | Site[];
meta?: any;
}
之所以使用它,是因为我可能会检索一个对象或对象数组。取决于我调用的API路由。
这是我尝试使用的服务方法
getSiteById(id: number): Observable<SiteResponse> {
return this.http.get<SiteResponse>(this.API_URL + '/' + id);
}
这是订阅
this.ss.getSiteById(this.id).subscribe((x: SiteResponse) => {
const site: Site = x.data;
this.link.setValue(site.siteLink);
this.imagePreview = site.path;
site.features.forEach(feature => {
this.features.push(this.fb.control(feature, Validators.required));
});
this.isPending = false;
});
对我来说,看起来不错,但对于验证程序而言却不是。
错误TS2322:键入“网站|无法将Site []”分配为“ Site”类型。类型“ Site []”不可分配给类型“ Site”。类型“ Site []”中缺少属性“ id”。
答案 0 :(得分:0)
通过添加额外的类型声明来解决
const site: Site = <Site>x.data;