La propriété 'json' n'existe pas sur le type" {}'

J'ai une classe de base abstraite à la Machine, qui ressemble à ceci:

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));
    }
}

Il fonctionne parfaitement. Cependant, le Tapuscrit compilateur se plaint .map(res => res.json()). Je reçois cette erreur:

ERROR in ./src/app/components/shared/something/some.abstract.service.ts
(13,29): error TS2339: Property 'json' does not exist on type '{}'.

J'ai suivi les exemples de l'angle de 2 documentation, et il fonctionne. Je suis juste malade de regarder cette erreur. Ai-je raté quelque chose?

Il me semble que la réponse que vous obtenez est déjà données json, de sorte que le json() l'appel est superflu. Et qui aurait du sens, puisque vous spécifier l'en-tête accept, où l'exemple de lien qui ne fonctionne pas.
ah - duh. Vous avez probablement raison, je peux probablement tomber cette ligne tout à fait. Mais... le compilateur ne le sais pas, droite? Ne devrait pas Tapuscrit encore me permettre de le faire - parce qu'il ne sait pas ce que le retour de données va ressembler?
Franchement, j'ai raté le tapuscrit de la balise de moi-même, je sais à peu près rien à ce sujet 🙂
Utilisation .map((res: Response) => res.json())

OriginalL'auteur drewwyatt | 2015-11-25