Skip to content
Latchkey

型推論とは?注釈なしの型

型推論とは、変数と式の型を自動的に推定するコンパイラの能力であり、すべてに注釈を付けずに静的型の安全性を得られます。

静的型付けは、いたるところに型を書くことを意味する必要はありません。型推論では、コンパイラが文脈から型を割り出します。数値の5を変数に代入すれば、その変数が数値だと分かります。Rust、Go、Kotlin、TypeScriptのような言語は積極的に推論し、はるかに少ない型付けの手間で完全な静的検査を与えます。

推論の仕組み

コンパイラは値がどう生成され使われるかを分析し、その使い方と整合する最も具体的な型を割り当てます。文字列リテラルの代入は文字列を推論し、関数の呼び出しはその宣言された戻り型を使います。推論された型は、書かれた型と同じくらい本物で検査されます。

推論が与えてくれるもの

  • 少ないボイラープレート: 書いて保守する明示的な注釈が減る。
  • すべての型を綴らなくても完全な静的な安全性。
  • コンパイラの検査の恩恵を受けつつ、より整ったコード。
  • 型がコードに自動で追随するため、より容易なリファクタリング。

依然として注釈を付ける場所

推論には限界があります。関数のパラメータ、公開APIの境界、曖昧なケースは、コンパイラが意図を推測できないことと、注釈が読み手のために契約を文書化することの両方から、しばしば依然として明示的な型を必要とします。

推論は動的型付けではない

よくある混同: 推論された型は依然として静的です。コンパイラがコンパイル時に型を固定し、あなたはそれを書かなかっただけです。これは、型が実行時に決まる動的型付けとは根本的に異なります。

手短な例

TypeScriptでは、let count = 0count を数値と推論します。後で count = "hi" と書くのは、型注釈を一度も書いていなくてもコンパイルエラーです。

CIにおける型推論

推論は冗長なコードなしにbuildを強力な型チェックの関門に保ち、推論された型エラーはCIで決定論的にfailします。大きなプロジェクトの型チェックはCPUとメモリを多く消費し得ます。より大きなrunner(Latchkey)はそれを速め、一時的なOOMやtoolchain障害を自動でリトライします。

重要なポイント

  • 型推論はコンパイラに型を推定させ、書く注釈が少なくて済むようにする。
  • 推論された型は動的型付けとは違い、完全に静的で検査される。
  • 明快さと正しさのため、APIの境界や曖昧なケースには依然として注釈を付ける。

関連ガイド