angular - La propiedad 'json' no existe en el tipo '{}'
Tengo una clase base abstracta en Typescript que se ve así:
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));
}
}
Funciona perfectamente. Sin embargo, el compilador de Typescript se está quejando de .map(res => res.json()). Sigo recibiendo este error:
ERROR in ./src/app/components/shared/something/some.abstract.service.ts
(13,29): error TS2339: Property 'json' does not exist on type '{}'.
Seguí los ejemplos en la documentación de Angular 2, y funciona. Simplemente estoy harto de mirar este error. ¿Me estoy perdiendo de algo?
Respuesta #1
Para mí esto parece extraño...
.map(res => (<Response>res).json())
Lo haría
.map((res: Response) => res.json())
Respuesta #2
Puedes deshacerte de este error mediante una afirmación de tipo a Response:
.map((res: Response) => res.json())
http.post() devolverá un Observable<Response> sobre el cual map requerirá un objeto de tipo Response. Creo que esa es una definición faltante en el actual TypeScript AngularJS .d.ts.
