TS 类型缺少以下属性

Posted

技术标签:

【中文标题】TS 类型缺少以下属性【英文标题】:TS Type is missing the following properties 【发布时间】:2019-06-21 06:22:40 【问题描述】:

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

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

这是主界面:

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[]”类型的以下属性:length、pop、push、concat 等 26 个。

我做错了什么?

提前谢谢你!

【问题讨论】:

【参考方案1】:

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

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

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

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

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

【讨论】:

我对类似情况的解决方案:<any>datadata as any

以上是关于TS 类型缺少以下属性的主要内容,如果未能解决你的问题,请参考以下文章

错误 TS2741:类型中缺少属性

“订阅”类型缺少“订阅”类型的以下属性:_parentOrParents、_subscriptions

打字稿缺少属性

类型中缺少属性“孩子”

TypeScript 项目中缺少基本的 DOM 类型

Reactj,类型中缺少打字稿属性'setState'