2016-05-09 71 views
1

不久前,我開始開發Typescript & C#,而以前我的大部分開發都是使用javascript + php。 我正在開發一個角度2應用程序,並創建了一個HTTP服務。 我在這裏討論的問題具有比下面的代碼角2.爲什麼Typescript lambda函數被大括號破壞?

更多的是打字稿:

export class HttpRest{ 
constructor(
     private _http: Http, 
     private userIdsx: UserIds, 
     private _jsonFormater: JsonFormater 
){} 
... 
getGroupsList(){ 
    return this._http.get('file.json') 
     .map(res => res.json()); 
} 
... 
} 

我傳遞一個匿名lambda函數與一個單一的發言,我想添加大括號來創建一個函數範圍,但是當我這樣做時,事情就會被破壞。

我試着去重構:

.map(res => res.json()); 

要:

.map((res) => { 
    res.json() 
}); 

所以我可以做更多的操作,但這種剎車的JSON對象上的代碼,並導致一個未定義的錯誤定義通過res.json()。

問題是,爲什麼添加大括號可以剎住這個簡單的功能? 不是帶範圍的lambda函數大括號是該語言的內置功能嗎?

回答

2

請使用以下內容。你需要返回一些東西。

.map((res) => { 
    return res.json() 
}); 

隨着簡潔機身版本(無大括號),它含蓄地做......

+0

由於這個解決它,我並沒有意識到,返回值也可能是隱含推斷,這聽起來好像一個不好的做法。 – wagwanJahMan