型システム—「TypeScriptの型はあくまでも提案であり、保証ではありません」
私の課題は、 TypeScriptは型をシミュレートするだけで、Rustのように型を強制しないことです。AIの反応:
「その通りです。TypeScriptの型システムは開発時の錯覚です。コンパイル時には型情報が一切含まれないプレーンなJavaScriptになります。as anyあらゆるチェックを回避できてしまうため、間違ったコードを書くJSON.parse()とany手探りで進むことになります。Rustの型システムはコンパイラによって強制され、(明示的なunsafeブロック以外では)抜け道はありません。コンパイルが成功すれば、あらゆる種類のバグは発生しなくなります。ZodはTypeScriptにランタイム検証機能を追加しますが、これはオプトイン方式なので、常に意識して使用する必要があります。Rustには、忘れるという選択肢はありません。」
これはあなたのビジネスにとって何を意味するのか?:タイプシステムは、ユーザーが間違いに気づく前にそれを検出するために存在します。問題は、その安全網がどれほど強力かということです。
これをスペクトルとして考えてみましょう。一方の端にはRustがあります。コードがコンパイルされれば、ヌルポインタエラー、データ競合、メモリ破損といったバグのカテゴリ全体が数学的に発生しません。開発速度は遅くなりますが、その代償は一度きりです。もう一方の端にはプレーンなJavaScriptがあります。エラーは本番環境でユーザーによって発見されます。TypeScriptはその中間に位置します。開発中に多くのエラーを検出しますが、実行時には保護機能は一切ありません。
意思決定者にとって重要なのは、どのシステムが抽象的に「最適」かという問題ではありません。重要なのは、バグが本番環境に持ち込まれた場合、自社の業務領域でどのようなコストが発生するかということです。ボタンの色が間違っているというバグであれば、TypeScriptで問題ありません。しかし、バグによって財務計算が知らず知らずのうちに間違っていたり、医療記録が破損したりするのであれば、オフスイッチのない型システムが必要になります。