TypeScriptの型推論とは?型注釈との違いを理解する – 4/13

前回の記事では TypeScriptの基本型(string / number / boolean など) を解説しました。

TypeScriptでは型を指定することで安全なコードを書くことができますが、実は すべての変数に型を書く必要はありません。

その理由は 型推論(Type Inference) という仕組みがあるからです。

この記事では次の内容を解説します。

  • 型推論とは何か
  • 型注釈との違い
  • 型推論が行われるケース
  • 実務での使い分け

TypeScriptを書く上で非常に重要な概念なので、しっかり理解しておきましょう。


型推論とは

型推論とは

値から型を自動的に判断する仕組み

のことです。

TypeScriptでは、変数の値を見て自動的に型を決定します。

例えば次のコードです。

let age = 20

この場合、TypeScriptは

age: number

と判断します。

つまり次のコードと同じ意味になります。

let age: number = 20

これが 型推論 です。


文字列の型推論

文字列でも同様です。

let name = "Taro"

TypeScriptはこの値を見て

name: string

と判断します。

そのため次のようなコードはエラーになります。

name = 10

TypeScriptは

number は string に代入できない

と判断します。


booleanの型推論

boolean型も同じです。

let isAdmin = true

TypeScriptは

boolean

と推論します。

もし次のように書くと

isAdmin = "yes"

エラーになります。


配列の型推論

配列でも型推論は働きます。

let numbers = [1, 2, 3]

この場合

number[]

と判断されます。

つまり

numbers.push(4)

はOKですが

numbers.push("hello")

はエラーになります。


オブジェクトの型推論

オブジェクトでも型推論が行われます。

let user = {
  name: "Taro",
  age: 20
}

TypeScriptは次の型を推論します。

{
  name: string
  age: number
}

そのため

user.age = 21

は問題ありませんが

user.age = "twenty"

はエラーになります。


型推論のメリット

型推論には次のメリットがあります。

コードが短くなる

型を書く必要がないため、コードがシンプルになります。

let count = 10

可読性が高い

型が明確な場合、型を書く必要がありません。


IDE補完が使える

型推論でもIDEは型を理解します。

そのため

  • 自動補完
  • エラー警告

などが正常に機能します。


型注釈との違い

型注釈とは

型を明示的に書くこと

です。

let age: number = 20

一方、型推論は

let age = 20

です。


型推論を使うべきケース

基本的には

型推論を使う

のが一般的です。

理由は

  • コードが短くなる
  • TypeScriptが自動判断する

ためです。

例えば次のコードです。

let price = 100

これは十分分かりやすいです。


型注釈を使うべきケース

次のような場合は 型注釈を使うべきです。

関数の引数

function add(a: number, b: number) {
  return a + b
}

APIデータ

type User = {
  name: string
  age: number
}

複雑なオブジェクト

型を明示した方が理解しやすくなります。


実務での使い分け

実務では次のように使い分けます。

ケース方法
単純な変数型推論
関数引数型注釈
オブジェクト型定義
APIデータ型定義

つまり

基本は型推論
必要な部分だけ型注釈

という考え方です。


型推論の注意点

型推論にも注意点があります。

例えば次のコードです。

let data = null

この場合、TypeScriptは

any

として扱う場合があります。

そのため、型を明確にしたい場合は

let data: string | null = null

のように書くことも重要です。


まとめ

この記事では TypeScriptの型推論 を解説しました。

重要なポイントを整理します。

  • 型推論とは値から型を判断する仕組み
  • 型を書かなくてもTypeScriptが判断する
  • コードがシンプルになる
  • 必要な部分では型注釈を使う

TypeScriptでは

型推論 + 型注釈

をバランスよく使うことが重要です。


次の記事

次回は

TypeScriptの関数型

を解説します。

関数の型はTypeScriptで非常に重要で

  • 引数
  • 戻り値
  • Optional引数
  • アロー関数

などを詳しく解説します。

コメント

タイトルとURLをコピーしました