类型observable <{}>不能分配给任何类型:Typescript中类型{}中缺少属性长度

Pro*_*ist 11 rxjs typescript angular

我正在尝试使用Angular2 http将JSON数据保存在本地系统中.

import { Injectable }     from '@angular/core';
import { Http, Response } from '@angular/http';
import { General }        from './general';
import { Observable }     from 'rxjs/Observable';

@Injectable()
export class GeneralService {
    // #docregion endpoint
    private statusUrl = './jsondata';  // URL to web API
    // #enddocregion endpoint

    // #docregion ctor
    constructor (private http: Http) {}
    // #enddocregion ctor

    // #docregion methods, error-handling, http-get
    getStatus (): Observable<General[]> {
        return this.http.get(this.statusUrl)
            .map(this.extractData)
            .catch(this.handleError);
    }
 private extractData(res: Response) {
        let body = res.json();
        return body.data || { };
    }


    private handleError (error: Response | any) {
        // In a real world app, we might use a remote logging infrastructure
        let errMsg: string;
        if (error instanceof Response) {
            const body = error.json() || '';
            const err = body.error || JSON.stringify(body);
            errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
        } else {
            errMsg = error.message ? error.message : error.toString();
        }
        console.error(errMsg);
        return Observable.throw(errMsg);
    }

}
Run Code Online (Sandbox Code Playgroud)

我收到错误 - 类型可观察<{}>不能分配给'Observable'类型.类型'{}'不能分配给'General []'类型."{}"类型中缺少属性长度

这里一般是一个班级名称.我使用rxjs-5.0.我正在关注Angular.io的英雄之旅并制作我自己的项目.对此有何帮助?

小智 5


从'rxjs/Observable'改变了import {Observable}的导入;

导入{可观察}从"rxjs";
这一切都奏效了


Ale*_*lex 0

编译器说您尝试将一个对象分配给(将军)数组。

我猜你的问题出return body.data || {}extractData. 尝试return body.data || []一下。