2016-08-02 22 views
5

W moim kodzie pojawił się mały problem, który był dla mnie niejasny i mam nadzieję, że ktoś może wyjaśnić, dlaczego robi to, co robi.Funkcja strzałki ES6 z nawiasami

Kod 1

sendText(){ 
    return this.http.get('/api') 
     .map((response:Response) => response.json()); 
} 

Code 2

sendText(){ 
    return this.http.get('/api').map((response:Response) => { 
     response.json(); 
    }); 
} 

Kluczową różnicą między tymi dwoma kodu jest to, że w kodeksu 2 umieściłem wsporniki po funkcji strzałki, aby dodać moje zadania w tych nawiasach iw Kod 1 Wziąłem klamry i umieść zadanie w jednej linii.

Moje pytanie brzmi: Dlaczego mój obiekt nadchodzi od strony serwera wraca jako niezdefiniowane w code2 metodą subskrybowania że angular2 dostarczonych podczas Kod1 Zwraca obiekt podejrzewam.

+4

z szelkami trzeba użyć 'return' podobnie jak w klasycznej funkcji. – georg

+2

Bez nawiasów: wyrażenie. W nawiasach: blok kodu. –

Odpowiedz

10
(response:Response) => response.json() 

To skrótowym na to:

(response:Response) => { return response.json(); } 

{} pozwalają dodać wielu oświadczenia wewnątrz bloku. Bez nich funkcja po prostu uruchamia jedną instrukcję i zwraca jej wartość.

Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

+0

Nie ma za co. Czy możesz mi coś wyjaśnić? Dlaczego masz 'response: Response' zamiast tylko' response'? Czy to jest jak podpowiedź typu? –

+0

Uhmm z tego, co powiedział mi tutorial. Jest to składnia maszynopisu, która zapewnia mi, że jest typu Response. Dlatego unika się przyszłych błędów. Nie wierz mi na słowo, chociaż lol wciąż się uczę. Czy to nie jest konieczne? –

+0

Może to być konieczne w Maszynopisie, nie wiem, nigdy go nie używałem. W JavaScript jest to błąd składniowy. –

Powiązane problemy