メインコンテンツまでスキップ

型の自動推論

TypeScriptには変数の型を自動的に推論する機能があります。それにより、全ての変数に型を指定する必要はなく、必要な場面でのみ指定することができます。

let a = "hoge" // aはstring型になる
let b = 1 // bはnumber型になる
let c = true // cはboolean型になる

ここでconstを用いずletを使ったのには理由があり、constを使った場合には以下のようにリテラル型になります。

const a = "hoge" // aは"hoge"型になる
const b = 1 // bは1型になる
const c = true // cはtrue型になる

理由は簡単で、constは再代入できないため、その値から変化することがないためです。となればできる限り小さな集合にしておいたほうが小回りが効くし、TypeScriptの推論による機能をより多く得られる、というわけです。

ただしconstは再代入を制限するものであり値を不変にするものではありません。したがって、例えばオブジェクトの中身の変更は自由なため、以下の様に推論されます。

const a = {
name: "eraser"
}
// aは { name: string } 型になる

つまりTypeScriptは、「現実的(実用的)な範囲で型を最小限にする」推論を持っています。したがって我々は以下の様なケース以外で型を指定することは少ないです。

  • 推論による結果とは異なる型を指定したい場合
  • 推論が当てにならない場合
    • 関数の返り値の型など
      • (「関数の型」の章でわかると思う)
  • 型の指定自体に意味がある場合
    • 推論結果はそのとおりなんだけど目に見える形で指定しておきたい、など
    • こういう資料で理解の一助に

ただしこれは慣習であり宗教なので人によって異なるとは思います。とはいえ「必要なければ指定しない」派がマジョリティなはずなので、それに合わせておく方が良いと思います。少なくとも仕事場では仕事場の方針(思想)に合わせましょう。