angular - ویژگی 'json' در نوع '{}' وجود ندارد


من یک کلاس پایه انتزاعی در تایپاسکریپت دارم که شبیه این است:

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

این بهطور کامل کار میکند. با این حال، کامپایلر تایپاسکریپت درباره .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 '{}'.

من از مثالهای موجود در مستندات Angular 2 پیروی کردم و این کار میکند. من فقط از نگاه کردن به این خطا خسته شدهام. آیا چیزی را از دست دادهام؟

پاسخ شماره ۱

برای من این عجیب به نظر میرسد...

.map(res => (<Response>res).json())

من انجام میدهم

.map((res: Response) => res.json())

پاسخ شماره ۲

شما میتوانید با استفاده از تایپ-اسرت به Response، از این خطا خلاص شوید:

.map((res: Response) => res.json())

http.post() یک Observable<Response> بازمیگرداند که روی آن map به یک شیء از نوع Response نیاز دارد. فکر میکنم این یک تعریف گمشده در .d.ts فعلی AngularJS TypeScript است.