angular - ts2339 - property http does not exist on type
La propiedad ''json'' no existe en el tipo ''{}'' (2)
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 queja 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 angular 2 , y funciona . Estoy harto de mirar este error. ¿Me estoy perdiendo de algo?
Para mí esto se ve extraño ...
.map(res => (<Response>res).json())
yo lo haría
.map((res: Response) => res.json())
Puede deshacerse de este error por tipo-aserción en Response
:
.map((res: Response) => res.json())
http.post()
devolverá un Observable<Response>
en el que el map
requerirá un Objeto de tipo Response
. Creo que es una definición faltante en el actual TypeScript AngularJS .d.ts
.