2017-11-14 8 views
1

parrameter私の宣言(インタフェース)番号オブジェクトに文字列値を割り当てることができる午前:活字体:なぜ私はインターフェイス宣言した

export interface DateArray { 
    year : number; 
} 

と私はそうのように私のコンポーネントで新しい変数を宣言しています:

private dateArray: DateArray = { 
    year: null 
}; 

、私のコンポーネントで、私はdateArray.yearに値を代入しています が好き:

this.dateArray.year = this.megaData[0][3]; 

今WH私が理解できないのは、this.megaData[0][3]の値が(文字列、数値、配列)であっても、問題なくthis.dateArray.yearに割り当てられているということです。

私は:

this.dateArray.year = "A" 

私はエラー「文字列を数値に割り当てることはできません」を取得しますが、this.megaData[0][3]の値が"A"あるとき、私はエラーを取得していない、との出力:

 this.dateArray.year = this.megaData[0][3]; 
     console.log("this.dateArray.year); 

だけA

this.megaDataは、ちょうど今の<any>として定義され、これは多分problですそう?

+0

'this.megaDataはちょうど今のところと定義されていますが、これはおそらく問題でしょうか?' <=正しいとは 'any'は数字でもよいし、数字を含むこともできます。 – Igor

+1

正確に...数値[[]]としてthis.megaDataを宣言します。 – Niladri

答えて

0

this.megaDataは今のところ<any>と定義されていますが、これはおそらく問題でしょうか? anyとして正しい

は、それはまた、または、数(yearの宣言された型)は、型の不一致エラーを生成しない割り当てを含むことができることを意味します。

+0

したがって、TSは以前に宣言された値だけを調べ、関連するかどうかを確認するために変数に割り当てられたすべての値を再確認しません。意味は、それは単に "タイプ"を手渡すだけで、価値を引き継ぐたびに新しいものを動かすわけではありません。うーん、それは私のためにそれを見ての非常に異なる方法です。 –

+0

@AlfaBravo - 正しい、それはトランスバータによって実行可能でない実行時のチェックになります。 – Igor

+0

それは静的なタイプのシステムの全体のアイデアです。 Javascriptはその場で可変型を変更できますが、これがランタイムエラーの主な原因です。 – Kokodoko

関連する問題