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>data
或 data as any
以上是关于TS 类型缺少以下属性的主要内容,如果未能解决你的问题,请参考以下文章