2015-12-26 66 views
1

我這裏的代碼塊:可觀察<Any>觸發TSLint '屬性不存在'

this._auth.getToken().flatMap(token => { 
    return this._http.post("/authenticate"); 
}).flatMap(res => { 
    let headers = new Headers(); 
    headers.append("Content-Type", "application/json"); 
    headers.append("Authorization", res.json().Token); 
    return this._http.get(this.endpoints[endpoint], {headers: headers}); 
}); 

http.gethttp.post返回可觀察<響應>含有.json方法

但是flatMap返回一個Obs可操作<任何>其中不包含.json方法。

它工作正常,但TSlint與抱怨:

住宅 'JSON' 的類型不存在 '{}' 在第32行山坳49

難道我做錯了什麼?這是預期的嗎?這不是什麼大問題,但也許這是代碼中更大問題的症狀。

+0

試着用'.flatMap((RES:響應)=> ...)' –

+0

它的工作原理!謝謝。你爲什麼不把它作爲答案發布? –

+0

我按照你的建議發佈了它作爲答案。我很好奇你使用的版本(angular2和TS),你正在使用哪個版本? –

回答

0

要解決這個問題,你應該添加Response作爲返回值

flatMap((res: Response) => { 
    let headers = new Headers(); 
    headers.append("Content-Type", "application/json"); 
    headers.append("Authorization", res.json().Token); 
    return this._http.get(this.endpoints[endpoint], {headers: headers}); 
}); 

注意

這是已經固定的類型,檢查這個comment,所以pressumably你的不是最新版本。我使用beta.0測試了它,即使沒有添加Response作爲類型,我也無法複製此消息。

參考