私はAngular2とTypescriptを学んでいます。私はangular.ioのHeroesチュートリアルで作業していますが、これをASP.Netから変換しているプロジェクトに適用しています。私は理解していないことが原因であると思う問題にぶつかりましたが、チュートリアルの関連する部分と一致しています。Observable <{}>タイプに割り当てられないObservable <SomeType[]>
import { Injectable } from '@angular/core';
import {RiskListSummary} from '../Models/RiskListSummary';
import { Observable } from 'rxjs/Rx';
import { Http, Response } from '@angular/http';
@Injectable()
export class RiskAssessmentListService {
constructor(private http : Http) {}
private serviceUrl = "http://myserviceurl/";
getRisks(): Observable<RiskListSummary[]> {
return this.http.get(this.serviceUrl)
.map(this.extractData())
.catch(this.handleError());
}
private extractData(res: Response) {
if (res.status < 200 || res.status >= 300) {
throw new Error('Bad response status: ' + res.status);
}
let body = res.json();
return body.data || { };
}
private handleError (error: any) {
let errMsg = error.message || 'Server error';
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
}
}
私は "(this.serviceUrl)this.http.getを返す" 行に次のエラーを取得しています:
Error:(20, 16) TS2322: Type 'Observable<{}>' is not assignable to type 'Observable'. Type '{}' is not assignable to type 'RiskListSummary[]'. Property 'length' is missing in type '{}'.
それが違いをした場合、私は(webstormを使用しています最新のバージョン)、しかし、私はこのエラーがtypescriptコンパイラから直接来ていると思います。私はrxjsの入力ファイルが必要かもしれないと思っていましたが、チュートリアルでは使用していないので、 "入力検索"で見つけたものはどれも違いがありません
以下はパッケージからの依存関係です。 JSON:
"dependencies": {
"@angular/common": "2.0.0-rc.1",
"@angular/compiler": "2.0.0-rc.1",
"@angular/core": "2.0.0-rc.1",
"@angular/http": "2.0.0-rc.1",
"@angular/platform-browser": "2.0.0-rc.1",
"@angular/platform-browser-dynamic": "2.0.0-rc.1",
"@angular/router": "2.0.0-rc.1",
"@angular/router-deprecated": "2.0.0-rc.1",
"@angular/upgrade": "2.0.0-rc.1",
"systemjs": "0.19.27",
"es6-shim": "^0.35.0",
"reflect-metadata": "^0.1.3",
"rxjs": "5.0.0-beta.6",
"zone.js": "^0.6.12"
ありがとう、それはトリックでした。元の例(https: //angular.io/docs/ts/latest/guide/server-communication.html#)。私は、それがまだ同じエラーを返すかどうかを確かめるために、その例に従って正確に新しいプロジェクトを開始する必要があると思う。 –