2016-12-22 9 views
2

私はTypeScriptを使用しています。私はそれを使用しているので、変数の宣言に関する質問があります。Typescript:let(ベストプラクティス)を使用

変数を宣言するときは、let name: type = valueを使用します。わかりました。私はいつも変数の型を割り当てます。文字列が必要な場合は、stringというブール値と数値で宣言します。どのタイプの変数でもあるタイプanyが見えました。

質問:変数を数値として宣言した場合、let myNumber: number = 23;を使用する必要がありますか?タイプが数字であると言うのに必要ですか?

typeOf(myNumber)を入力すると数字が返されますが、TypeScriptの場合はnumberまたはanyになりますか?

変数に値を割り当てるとき、または重要ではない場合は常に型を設定することをお勧めします。

答えて

3

Typescriptは、タイプがanyの変数を作成しないようにします。 tsconfig.jsonnoImplicityAnytrueに設定すると、タイプを指定しないとエラーになり、Typescriptはタイプをanyにしか設定できません。

一般的にあなたが...あなたの例のように、あなたのlet

let myNumber: number = 23; 

をタイプを指定するとき...あなたがタイプ明示的を設定し、話します。これは、この変数をnumberにするという意図を明確に伝えることを意味します。数値以外の値を割り当てると、エラーが発生します。 すべて明示的な型の変数は、コードの明瞭度を向上させるだけなので、何も問題はありません。

もう1つの方法は、変数を暗黙的にと入力することです。あなたは変数に数値リテラルを割り当てるので、活字体が変数の型を推論することができますし、それ数を検討します

let myNumber = 23; 

:あなたは、宣言時にあなたの変数に値を代入するときにのみ行うことができます。いくつかのケースでは、労働組合のタイプのために、たとえば、inferrenceを上書きするのに便利です。

let myNumberOrText: number | string = 23; 

あなたはtruenoImplicitAnyセットを持っている場合は、anyへの暗黙的なタイピングが禁止されています。それは暗黙的にanyに入力しているためそう...

let myAny = { FirstName: "John", LastName: "Doe" }; 

は...、エラーが発生します。明示的なバージョンは引き続き許可されます。活字体であなたが好ましく、クラスまたはインタフェースを宣言し、タイピングのためにそれを使用するが、だからあなたは(あなたがタイプPersonを宣言したと仮定した場合)... ...

let myAny: any = { FirstName: "John", LastName: "Doe" }; 

を書き込むことができます。

let myPerson: Person = { FirstName: "John", LastName: "Doe" }; 

Typescriptの全体的なポイントは、JavaScriptに静​​的型を導入することです。変数をタイプanyで宣言すると、静的型付けの利点がなくなり、単純なJavaScriptを使用できます。

+0

ありがとうございます。私は最後の質問があります:この行 'let myNumberOrText:number | string = 23; '変数の型がnumber o stringになると言っていますか?だから私は値 '23'で初期化することができますが、 '' hello ''で値を変更した後にできますか? – albert

+1

@albert:そうです。 – Sefe

関連する問題