2016-08-02 21 views
5

Kodumda küçük bir sorunla karşılaştım. Bu benim için kafa karıştırıcı bir şeydi ve birisinin neden yaptığı şeyleri açıkladığını umuyoruz.ES6 Köşeli parantezler

Kod 1

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

Kod 2

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

bu iki kod arasındaki temel fark, Kod 2 eklemek için ok işlevi sonra parantez yerleştirilmiş olmasıdır bu parantez içindeki görevlerim ve Code 1 içinde parantezleri çıkardım ve görevi bir satıra yerleştirin.

Benim sorum niçin Sanıyorum nesnesi döndürenKod1 ederken sağlanan angular2 abone yöntemiyle kodu2geri olarak tanımlanmamış gelen sunucu tarafından gelen benim nesnesi.

+4

'sadece klasik işlevinde gibi return'. – georg

+2

Parantez yok: ifade. Parantez ile: kod bloğu. –

cevap

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

Bu bunun için stenografi geçerli:

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

Eğer bloğun içine birden ifadeleri ekleyelim. Bunlar olmadan, işlev sadece bir ifadeyi çalıştırır ve değerini döndürür.

Dokümanlar: Kullanmak zorunda parantez ile https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

+0

Rica ederim. Ayrıca, benim için bir şeyi temizleyebilir misin? Neden sadece "response" yerine "response: Response" var? Bu bir ipucu ya da bir şey gibi mi? –

+0

Uhmm, öğreticinin bana anlattığı şeyden. Bu, yanıtın tür olduğunu gösteren bir yazı dizimi sözdizimi. Böylece gelecekteki hatalardan kaçınılır. Sözümü tuttum lol olsun ama hala öğreniyorum. Gereksiz mi? –

+0

Tipcript'te gerekli olabilir, bilmiyorum, hiç kullanmadım. JavaScript'te, bir sözdizimi hatasıdır. –