TypeScriptには、次のような抽象基本クラスがあります。
_import {Http, Headers, Response} from 'angular2/http';
export abstract class SomeService {
constructor(private http:Http) {}
protected post(path:string, data:Object) {
let stringifiedData = JSON.stringify(data);
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('Accept', 'application/json');
this.http.post(`http://api.example.com/${path}`, stringifiedData, { headers })
.map(res => res.json())
.subscribe(obj => console.log(obj));
}
}
_
完璧に機能します。ただし、TypeScriptコンパイラは.map(res => res.json())
について文句を言っています。このエラーが発生し続けます:
_ERROR in ./src/app/components/shared/something/some.abstract.service.ts
(13,29): error TS2339: Property 'json' does not exist on type '{}'.
_
the angular 2 documentation 、およびit worksの例に従いました。 mこのエラーをじっと見つめているだけでうんざり。
私にはこれは奇妙に見える...
.map(res => (<Response>res).json())
私はやります
.map((res: Response) => res.json())
Response
への型アサーションにより、このエラーを取り除くことができます:
_.map((res: Response) => res.json())
_
http.post()
はmap
で_Observable<Response>
_を返し、Response
型のオブジェクトが必要です。これは、現在のTypeScript AngularJS _.d.ts
_に定義が欠けていると思います。