TS 类型缺少以下属性

A.S*_*ice 9 casting typescript angular

我在 3.2.4 版中使用带有 TS 的 Angular 7.xx。

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

这是主界面:

export interface Result {
      var1: string;
      var2: number;
      var3: boolean;
} 
Run Code Online (Sandbox Code Playgroud)

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

export interface ResultPlus extends Result {
      var4: boolean;
}
Run Code Online (Sandbox Code Playgroud)

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

在我的组件中,我订阅了这项服务:

dataArray: ResultPlus[] = [];    

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

(代码中没有*)

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

错误 TS2740:“ResultPlus”类型缺少“ResultPlus[]”类型中的以下属性:length、pop、push、concat 等 26 个。

我究竟做错了什么?

先感谢您!

Jon*_*ton 13

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

**this.dataArray** = (data as unknown as ResultPlus[]);
Run Code Online (Sandbox Code Playgroud)

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

如果您尝试添加到this.dataArray每个 item data,那么您需要推送到它 - 例如:

this.dataArray.push(data as unknown as ResultPlus);
Run Code Online (Sandbox Code Playgroud)

  • 我对类似情况的解决方案:“&lt;any&gt;data”或“data as any” (2认同)