javascript - De ce funcția lambda Typescript se strică din cauza acoladelor?


Am început să dezvolt în Typescript și C# nu de mult, în timp ce anterior cea mai mare parte a dezvoltării mele era cu javascript+php. Dezvolt o aplicație Angular 2 și am creat un serviciu HTTP. Problema despre care discut aici are mai mult legătură cu Typescript decât cu Angular 2.

în următorul cod:

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

Transmit o funcție lambda anonimă cu o singură declarație și vreau să adaug acolade pentru a crea un scop al funcției, dar când fac asta lucrurile se strică.

Încerc să refactorizez:

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

Către :

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

Așa că aș putea face mai multe operațiuni, dar asta strică codul și duce la o eroare nedefinită pe obiectul JSON care este definit de res.json().

Întrebarea este, de ce adăugarea acoladelor strică această funcție simplă? Nu sunt funcțiile lambda cu acolade de sferă în domeniu o caracteristică încorporată a limbajului?

Răspuns #1

Folosește următorul. Trebuie să returnezi ceva.

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

Cu versiunea concisă a corpului (fără acolade), este făcut implicit...