私はhttpリクエストを作成してマップを実行しようとしています。map2:引数タイプがパラメータと一致しません
私は角度のドキュメントを続いたが、何らかの理由で私はマップ機能上のエラーを取得しています:「引数の型がパラメータと一致しません」。私は'rxjs/add/operator/map';
を輸入しています。
npm install
にする必要がありますか?
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import {Observable} from "rxjs/Observable";
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';
@Injectable()
export class ApiService {
constructor(private http: Http) {
}
public getValue() : Observable<any> {
return this.http.get('')
.map(this.extractData)
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}
private extractData(res: Response) {
let body = res.json();
return body.data || { };
}
}
UPDATE:何らかの理由で
:私はここにAngular 4.0.2
、rxjs 5.0.1
とWebStorm 2016.1.3
を使用してい
は私のコードです.map().map(this.extractData)
への変更は、問題を解決しました。ここ はmap.d.ts
定義です:
import { map } from '../../operator/map';
declare module '../../Observable' {
interface Observable<T> {
map: typeof map;
}
}
誰かが理由を説明することができれば、私は幸せになります。
UPDATE 2:
が.map()
なし.map(this.extractData)
に戻すプロジェクトを実行しているときに動作するようです!おそらく、Webstorm IDEによって生成されるエラーです。
あなたの解決策は悪い考えです... Typescriptコンパイラのエラーは一般的には、混合について明示されていないことを混ぜているかもしれないという警告です。あなたのエラーは元の 'map'関数で確実ですか? 'map'を削除すると、エラーは消えますか?またはextractData関数を一時的に変更してパラメータとして 'any'を受け入れるなら、Typescriptエラーは消えますか? – snorkpete
@snorkpete map()を削除するとエラーが発生します。さらに、「res:Response」の代わりに「res:any」を受け入れるように抽出データを変更すると、同じエラーが発生します – ohadinho
'map'を削除すると、同じ(元の)エラーか別のエラーが発生していますか? – snorkpete