TypeScript类型比较Type'Site |无法将Site []”分配给“ Site”类型

时间:2018-09-11 21:47:06

标签: angular typescript

我有以下界面

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”。

1 个答案:

答案 0 :(得分:0)

通过添加额外的类型声明来解决 const site: Site = <Site>x.data;