Dart は動的型付け言語です。どこにでも型を投げても、それでも動的です。したがって、これを念頭に置いて、通常、キャストするときは、物事が特定のタイプであることを確認したいことを意味します.
あなたの場合、それがButtonElement
. 型テストの目的でis
and演算子を使用できます。as
// You can write code to test the type yourself:
if (btnSend is! ButtonElement) throw 'Not a button';
// Or you can use "as" that will throw if the type is wrong:
var btnSend = query('#btnSendToServer') as ButtonElement;
場合によってはis
またはを使いますas
。as
パフォーマンスのオーバーヘッドが (小さい?) あるため、通常は を使用しません。
私が個人的に好む別のアプローチがあります。次のようにコードを記述します。
ButtonElement btnSend = query('#btnSendToServer');
開発中は、チェック モードで実行します。
dart --checked foo.dart
または、Dartium を使用する場合は、フラグを使用して Dartium を手動で起動する方法についてお読みください。Dart Editor をしばらく使用していないので、デフォルトでチェック モードが使用されているかどうか、およびそれを変更できるかどうかはわかりません。
btnSend
チェック モードで実行している場合、型が一致しない場合にへの代入がスローされます。これの良いところは、チェック モードを使用せずに本番環境でコードを実行する場合、アプリケーションでパフォーマンス オーバーヘッドが発生しないことです。
そして、いくつかの個別の質問に答えるには:
query
明示的/暗黙的なキャストをサポートしていますか?
いいえ。タイプを気にしない単なるランダム関数です。
ButtonElement
s のみを検索するクエリはありますか?
次のように書くことができます:
query('button#btnSendToServer')
これは典型的な CSS セレクターであり、Dart のものではありません。
クエリから返されるオブジェクトについて心配する必要がありますか?それともオブジェクトが返されると盲目的に信じることができますButtonElement
か?
はいといいえ。オブジェクトが ではない場合、最終的にはアプリケーションでスローされると思いますが、ButtonElement
次のように開発および作成する場合は、チェック モードで実行することをお勧めします。
ButtonElement btnSend = query('#btnSendToServer');
どのくらいのタイプ情報を投入するかはあなた次第です。ボタンのタイプが間違っている可能性が高いと思われる場合は、タイプを指定するのが理にかなっていると思います。個人的には型に夢中になることはありません。