型を明示的に宣言しなくても、自動で型を判断してくれる機能のことを「型推論」と言います。 var
は変数を宣言する際に使用されるキーワードで、変数の型を自分で決めなくても、その変数の型は初期化される値によって推論されます。
変数を初期化するとき、特定の値を割り当てると Dartはその値の型を見て、適切なデータ型をその変数に自動的に割り当てます。この機能により、コードの短縮と読みやすさが向上します。
どんな時に使う?
- 変数の初期化時に明確な型がすぐにわからない場合
プログラマが変数を初期化する際にどんなデータが格納されるか明確には決まっていない場面で特に有効です。 - クリアなコードを目指しているとき
関数やメソッドの戻り値など、型が明らかな場面での型注釈の省略は、コードのクリアさを保つのに役立ちます。 - コードの可読性を向上させたい場面
余計な型の注釈を省略することで、コードの主要な部分に注目しやすくなります。しかし、一方で過度な型推論はコードの可読性を低下させることもあるため、バランスが大切です。
final
、const
は、型推論の機能を持っています、そのため機能が重複するためvar
を指定することはできません。
[OK] final birthday = DateTime.now(); // birthdayは、DateTime型 として推論される
[OK] final DateTime birthday = DateTime.now(); // 明示的にDateTime型付ける
[OK] final y = "hello"; // String型として推論される
[OK] final String y = "hello"; // 明示的にString型付ける
[NG] final var x = "hello"; // エラー 型推論の機能が重複するため varを指定できない
[NG] const var x = 3.14; // エラー 型推論の機能が重複するため varを指定できない
Dartでは変数の型を明示的に宣言することも、型推論を利用することも可能です。
明示的な型宣言を使用すると、変数の型がコード上で明確になるため、ほかの開発者がコードを読むとき理解がし易くなります。一方、型推論を使用すると、コードがシンプルになりますが、型が明示的に示されていないため、場合によって分かりずらさを招く可能性があります。一般的に、明示的に型宣言が行える場合は、型宣言は行った方が良しとされています。
どんな時に使う?
- 明示的な型宣言
大規模なプロジェクトやチームでの開発、型の明確性が求められる場面。 - 型推論
小規模なプロジェクト、急速なプロトタイピング。