TS类型缺少以下属性

时间:2019-01-28 09:20:37

标签: angular typescript casting

我在Angular 7.x.x和TS中使用3.2.4版本。

我有两个TS接口。一个ist扩展了另一个:

这是主界面:

export interface Result {
      var1: string;
      var2: number;
      var3: boolean;
} 

第二个只是添加了一个属性:

export interface ResultPlus extends Result {
      var4: boolean;
}

现在我有一个返回Observable<Result[]>.的服务

我在组件中订阅了该服务:

dataArray: ResultPlus[] = [];    

getResults(): void {
      this.service.getResults()
          .subscribe(data => {
            **this.dataArray** = (data as unknown as ResultPlus);
          });
     }

(代码中没有*)

现在, this.dataArray (粗体-**)用红色下划线表示:

错误TS2740:类型'ResultPlus'缺少类型'ResultPlus []'的以下属性:长度,弹出,推入,连续和另外26个。

我在做什么错了?

提前谢谢!

1 个答案:

答案 0 :(得分:2)

尝试将演员表更改为ResultPlus[](数组类型)而不是单个实例:

**this.dataArray** = (data as unknown as ResultPlus[]);

即,您已声明dataArray为ResultPlus类型的数组。

如果您要为this.dataArray的每个项目添加到data,则需要将其推入-类似于:

this.dataArray.push(data as unknown as ResultPlus);