2017-09-06 10 views
0

アングルブラケットと「『活字体2における

オプションA以下のコードでas又は<>を使用しての違いは何ですか?? - 利用『』などの違いは何である戻り値の』としては、

convertResultToParams(columnView:IColumnViewResult):IColumnViewParams { 
    const params = {}; 

    Object.keys(this.getDefaultParams()) 
     .map(key => params[key] = columnView[key]); 

    return params as IColumnViewParams; 
} 

オプションB - 戻り値の使用 'ブラケット'

convertResultToParams(columnView:IColumnViewResult):IColumnViewParams { 
    const params = {}; 

    Object.keys(this.getDefaultParams()) 
     .map(key => params[key] = columnView[key]); 

    return <IColumnViewParams>params; 
} 

アンなぜ変数宣言で型を宣言できないのですか?

enter image description here

+1

「IColumnViewParams」型が必要な参照に明白なオブジェクトである '{}'の参照​​を割り当てようとしていますが、それは "タイプキャスト"に使用される '<>'または 'as'とは関係ありません – Dummy

+0

関連:https://stackoverflow.com/questions/44202311/what-is-the-as-syntax-pointed-out -by-tslint – k0pernikus

答えて

2

あなたのインターフェイスは、おそらく必要とされているメンバーがいるので、{}に初期化することは有効ではありません。初期化している場合は{}をインターフェイスタイプにキャストし、フィールドをすぐに追加します。

const params = {} as IColumnViewParams 

は当初活字鋳造用 <>を使用しますが、 asキャストオペレータが追加されましたので、JSXのサポートを追加してこれが問題となりました。キャスティングに違いはなく、使用できるコンテキストのみです。 <>はtsxで使用することはできません