プログラミングの用語一覧へ
このページの目次

静的型付けとは?

最終更新:2026/08/18

3秒でわかる

変数や式のを実行前に確定させる方式。型の食い違いをコンパイル時に見つけられるので、規模が大きいコードほど改修が安全になります。

もう少し詳しく

どういうものか

静的型付けは、変数・引数戻り値がどんな種類の値を持つのかを、プログラムを動かす前に確定させる方式です。型は人間が書いた注釈から読み取られるか、後述する型推論でコンパイラが決めます。そのうえでコンパイラや型チェッカが全体を走査し、数値を期待している場所に文字列が渡っていないかを、1 行も実行しないうちに検査します。Java、C、Go、Rust、TypeScript がこの方式で、Python や JavaScript のように実行時まで型が決まらない動的型付けと対になります。

なぜ必要か

動的型付けでは、型の食い違いはその行が実行された瞬間に初めて表面化します。月末のバッチでしか通らない分岐や、エラー処理の中だけで呼ばれる関数にひそんだ型の間違いは、テストが通っていても本番で初めて落ちます。静的型付けなら、その分岐が一度も実行されなくてもコンパイラが検出します。もうひとつの効き目は改修時です。関数の引数を 1 つ増やしたとき、呼び出し元が 200 か所あっても、直し漏れは全部コンパイルエラーとして並びます。grep で探して目視で確認する作業が不要になります。

具体例

function calcTax(price: number, rate: number): number { return Math.floor(price * rate); } calcTax(1000, 0.1); // calcTax("1000", 0.1) はコンパイル時にエラーになる // Argument of type 'string' is not assignable to parameter of type 'number'

同じ内容を Python で書くと、文字列を渡しても関数の中で掛け算が行われるまでエラーになりません。掛け算にたどり着く前にログ出力や DB 書き込みがあると、途中まで処理が進んだ状態で落ちます。

似た用語との違い

用語型が決まるとき代表的な言語
静的型付け実行前Java、Go、TypeScript
動的型付け実行時Python、JavaScript、Ruby
強い型付け暗黙変換をどこまで許すかの話で、静的か動的かとは別の軸Python は動的だが強い


静的と強いは別物です。C は静的ですが暗黙変換を広く許すため弱い側に寄り、Python は動的ですが文字列と数値の加算を拒むため強い側に寄ります。

つまずきやすいところ

型注釈を書けば安全になると思い込むと足をすくわれます。TypeScript の型は JavaScript に変換される時点で消えるため、API のレスポンスのように外から来る値は、宣言した型と実物が違っていても実行時には素通りします。any や as で黙らせた箇所も同じです。外部から入る値は zod などで実際に検証するか、少なくとも unknown で受けて絞り込む必要があります。

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地静的型付けプログラミング

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

このコースが入っている学習分野

TypeScriptコースの全編を見る