angular - TS 类型缺少以下属性

标签 angular typescript casting

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

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

这是主界面:

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

我做错了什么?

提前致谢!

最佳答案

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

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

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

如果您尝试为每个项目 data 添加到 this.dataArray,那么您需要推送到它 - 类似于:

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

关于angular - TS 类型缺少以下属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54398775/

相关文章:

将 char * 转换为 byte

arrays - 暂时将[u8]转换为[u16]

html - Angular mat-form-field 输入和标签

指针到函数指针之间的转换错误

html - 背景大小 : initial not working in IE10 and under

typescript - 在 typescript 库中使用未知类型是否会强制所有依赖者使用 typescript 3.0 或更高版本?

typescript - Nx-NestJS-TypeOrm : SyntaxError: Unexpected token {

javascript - 如何确保浏览器和 Node.js 的 JavaScript 库的兼容性

node.js - fs、缓冲区和流的 TypeORM 错误

Angular 4 路由器 : show view without redirect