Angular2属性不存在于类型'任何[]' (JSON)

时间:2016-09-07 07:46:03

标签: javascript json rest angular

我有一个名为条件的课程:

export class Condition{
    name: string;
    date: string;
    link: string;
}

一个名为搜索的函数,它使http获取请求:

public search(params: string): Observable<json[]> {
    let queryString = this.serverUrl + params;

     return this.http.get(queryString)
                     .map((res:Response) => res.json())
                     .catch((error:any) => Observable.throw(error.json().error || 'Server error'));

 } 

我得到一个对象来获取具有特定属性的条件。它在条目属性中绝对有一个对象数组:

this.search(`Condition?patient=Patient/107795`).subscribe(data => {
    var conditionArray = data.entry;       // data.entry is absolutely an ARRAY
    for(var condition of conditionArray){
        conditions.push({    //conditions is a Condition[]
            name: condition.resource.code.coding[0].display,
            date: condition.resource.dateRecorded,
            link: "condition/" + condition.resource.id
        });
    }
    } , err => { console.log(err); } );

我在使用启动脚本编写这些代码之前启动了这些项目

"scripts": {
    "start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite\" ",

该项目正如我想的那样工作,并且控制台上没有错误。但是,当我停止它并使用启动脚本再次启动时,它会出现此错误:

error TS2339: Property 'entry' does not exist on type 'any[]'.

你知道它有什么问题吗?我该如何解决?

1 个答案:

答案 0 :(得分:2)

您的search方法应该返回一个对象,而不是一个数组。声明如下:

public search(params: string): Observable<any> {

除非您有描述结果的类型,否则请使用any,如果有,您可以改用它。