Haxe は大部分が厳密に型指定された言語ですが、期待するほど厳密ではありません。他のいくつかの言語よりもはるかに寛大で、必要に応じて型システムから抜け出すことができます。また、毎回すべての型を指定する必要はありません-コンパイラは型推論を使用して型を「推論」します-例では、推論された型はArray<Dynamic>
ヘイクスの場合:
コンパイラは、デフォルトで強く型付けされます。型情報を指定することも (例: var x:Array<Int>;
)、コンパイラに推論させることもできます (例: var x = [0,1,2]
x は になりますArray:Int
)。
これは、何が起こっているのか$type(myVariable);
を理解するのに役立ちます。
型の推論が混乱したり、コンパイラが混乱したりする場合は、型を明示的に定義する方が簡単な場合があるため、混乱はありません。
Dynamic、Reflection、またはuntypedのいずれかを使用して、型システムをエスケープできます (邪魔になる場合、またはネイティブ ライブラリを操作しようとしている場合など) 。
Haxe の型チェックは、ほとんどがコンパイル時の機能です。コードをコンパイルするときに、型がチェックされ、正しいことが保証されます。ただし、実行時に奇妙なことをしようとすると、型チェックが行われず、何かが壊れる危険があります。
Haxe のターゲットの中には型付けが弱いものがあります (Javascript、Neko など)。ただし、Haxe の型チェックはコンパイル時に行われるため、厳密に型指定された言語のすべての利点 (エラー チェック、自動補完など) を利用できます。コンパイルされた Javascript または Neko Bytecode は型について認識しませんが、それは問題ではありません - Haxe は、すべてが機能することを確認しました。
理解しやすいように、いくつかのリンクを次に示します。