TL;DR
型システムの性質の一つ。静的な型(コンパイル時に決まる型)と実行時の型に互換性があることを、型システムが健全であるという。
なぜ必要か
Dart のドキュメントでは、健全性の利点として、型に関するバグをコンパイル時に見つけられること、型がうそをつかないのでコードが読みやすくなること、変更で壊れる箇所を型システムが知らせてくれること、事前(AOT)コンパイルでより効率のよいコードを生成できることを挙げている。
仕組み
Dart のドキュメントによると、健全性とは、プログラムがある種の不正な状態に陥らないと保証することである。健全な型システムでは、式を評価した値が、その式の静的な型と合わない状態には決してならない。Dart はコンパイル時の静的なチェックと実行時のチェックを組み合わせて健全性を保つ。たとえば String の値を int の変数に代入するとコンパイルエラーになり、as String のようなキャストの失敗は実行時に検出される。
例
Dart では、サブクラスでメソッドをオーバーライドするとき、戻り値の型はスーパークラスのメソッドの戻り値の型と同じか、そのサブタイプでなければならない。