类型“对象”必须具有返回迭代器的“ Symbol.iterator”方法

时间:2020-01-09 15:42:11

标签: angular typescript

data.technologies是一个数组,我想获取该数组的输出。

data.technologies的输出如下所示:

enter image description here

this.profileService.getEntities().subscribe(data => {
  for (const technology of data.technologies) {
    console.log(technology);
  }
});

getEntities()的类型为Observable<IprofileData>

export interface IprofileData {  
  technologies: object;
}

TypeScript给我错误:

TS2488:类型“ object”必须具有返回迭代器的“ Symbol.iterator”方法。

我在做什么错了?

3 个答案:

答案 0 :(得分:4)

运行时结构是正确的,它是一个数组,但是类型(根据您的评论)说它只是一个对象。对象没有迭代器协议,数组有迭代器。

应满足需要的示例类型:

type Data {
  ...// some other props
  technologies: string[] // change string into any type you have there
}

答案 1 :(得分:3)

针对未来的Google员工:

如果您忘记使函数输入对象化,这也是返回的错误消息。

示例:

setCurrRowData(...currRowData, sort_order: num);

修复:

setCurrRowData( { ...currRowData, sort_order: num } );

答案 2 :(得分:1)

data.technologies是一个函数(您提到它“返回”了数组)吗?如果是这样,您只需要这样调用即可:

this.profileService.getEntities().subscribe(data => {
    for (const technology of data.technologies()) {
        console.log(technology);
    }
});