2016-08-02 18 views
5

私のコードでは少し混乱していましたが、私には混乱していました。ES6括弧で囲まれた矢印機能

コード1

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

これらの2つのコードの間の主な違いは、コード2にI追加する矢印関数の後にブラケットを配置することであるコード2

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

それらの括弧内の私の仕事コード1私は括弧を外してタスクを1行に配置します。

私の質問はなぜ私が疑われるオブジェクトを返しますCODE1ながら提供angular2購読方法でCODE2に戻っとして未定義くるサーバ側からの私のオブジェクト。

+4

あなただけの古典的な機能のように 'return'を使用する必要が括弧付き。 – georg

+2

角かっこなし:expression。角括弧付き:コードブロック。 –

答えて

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

これは、このための速記です:

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

{}を使用すると、ブロック内複数のステートメントを追加してみましょう。関数がなければ、関数はただ一つの文を実行し、その値を返します。

ドキュメント:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

+0

あなたは大歓迎です。また、私のために何かをクリアすることはできますか?なぜあなたは '応答'の代わりに '応答:応答'を持っていますか?それは型ヒントか何かのようなものですか? –

+0

チュートリアルが教えてくれたものからこれは、それがタイプの応答であることを保証するタイスクリプト構文です。したがって、将来のエラーは回避されます。私がまだ学んでいるけれど、私の言葉を当然受け止めないでください。それは不要ですか? –

+0

Typescriptで必要かもしれない、私は知らない、私はそれを使用したことがない。 JavaScriptでは、構文エラーです。 –

関連する問題