Skip to content
Latchkey

静的型付けとは?実行前に型エラーを捕まえる

静的型付けとは、変数と式の型がプログラムの実行前、コンパイル時に検査されることを意味し、多くの型エラーが早期に捕まえられます。

静的型付け言語では、すべての値の型がコンパイル時に既知であり検査されます。数値が期待される場所に文字列を渡すと、コンパイラはプログラムが動く前にそれを拒否します。Java、Go、Rust、TypeScriptのような言語は静的型付けです。見返りはバグの一群を早期に捕まえられることで、コストはより多くの前もっての手間です。

型が検査されるとき

静的型付けはbuildの一部として、コンパイル時に型を検証します。型の不一致は実行時のクラッシュではなくコンパイルエラーです。コンパイルを生き延びたプログラムは、実行時にそれら特定の型の誤りを犯さないことが保証されます。

静的型付けの利点

  • 本番ではなくbuild時に多くのバグを捕まえる。
  • より優れたツール: 型に基づくautocomplete、リファクタリング、インラインドキュメント。
  • シグネチャが期待を述べる自己文書化されたコード。
  • 大きなコードベースをリファクタリングするときの自信。

静的 vs 動的型付け

静的型付けは実行前に型を検査し、動的型付けはプログラムの実行中に検査します。静的はエラーをより早く捕まえツールを助けますが、より冗長で硬直的です。動的はより柔軟で簡潔ですが、型エラーを実行時へ先送りします。

静的な型のコスト

より多くの型注釈を書き、時には型チェッカーと格闘します。コンパイルにも時間がかかります。トレードオフは、実行時の驚きを減らす代わりに、前もっての労力とより遅いbuildです。

手短な例

TypeScriptでは、function area(r: number) を宣言して area("3") を呼ぶのはコンパイルエラーです。buildがfailするため、その誤りは決して実行時に届きません。

CIにおける静的型付け

型チェックはbuildのステップであり、型エラーは意図どおり決定論的にpipelineをfailさせます。それらはflakyではなくリトライを決して必要としません。大きなコードベースでは型チェックは遅くメモリを多く消費し得ます。より大きなrunner(Latchkey)はそれを速め、一時的なOOMやtoolchainの不調を自動でリトライします。

重要なポイント

  • 静的型付けはコンパイル時に型を検査し、プログラムが動く前に多くのエラーを捕まえる。
  • 冗長さとbuild時間を代償に、ツールとリファクタリングの安全性を高める。
  • 型エラーは決定論的にbuildをfailさせるため、リトライではなく修正すべきである。

関連ガイド