【TypeScript】プリミティブ型ってなに?5つの基本型をわかりやすく解説
TypeScriptでコードを書き始めると、最初につまずくのが「型の書き方」です。
この記事では、TypeScriptを学ぶうえで最初に知っておくべき「プリミティブ型」を、実際のコード例をまじえて解説します。今の段階で覚えるべきは5種類だけです。それ以外の型(voidやneverなど)は後回しでまったく問題ありません。
この記事は次のような方におすすめです。
- TypeScriptを学び始めたばかりで、型の基本的な書き方を知りたい方
- string・number・booleanの型注釈がどう書くのかを確認したい方
- 「どの型から覚えればいいか」がわからず迷っている方
- nullとundefinedの違いが気になっている方
この記事を読み終えると、TypeScriptのプリミティブ型5種類の意味と型注釈の書き方がわかります。コードを書くための第一歩として、まずここを押さえましょう。
それでは、順を追って詳しく見ていきましょう!
- 未経験で後悔したくない
【実体験】未経験からITエンジニアに転職して後悔した話|4社経験してわかった「最初の選択ミス」 - 年収が低くて不安
4年間ずっと年収260万だったエンジニアが、転職で510万になるまでの全記録
プリミティブ型とは — TypeScriptの型システムの出発点
TypeScriptには「型」がたくさんありますが、そのなかで最も基本になるのがプリミティブ型です。まずここから理解しておくと、あとの学習がスムーズになります。
オブジェクトとの違いをざっくり理解する
プリミティブ型とは、「それ以上分解できない、値そのもの」のことです。
たとえば "こんにちは" という文字列や 42 という数字は、それ単体で完結した値です。これがプリミティブ型です。
一方で「オブジェクト」は複数の値をまとめた構造体です。{ name: "田中", age: 25 } のように、いくつかのプロパティを持てます。
「プリミティブ型 = 値そのもの」「オブジェクト = 値の集まり」というざっくりしたイメージで十分です。
なぜTypeScriptでプリミティブ型を明示的に書くのか
JavaScriptでは、変数に型を書く必要がありません。どんな値でも自由に入れられます。
// JavaScript: 型を書かなくても動く
let message = "こんにちは";
message = 123; // 数値に変えても怒られない
TypeScriptでは、型を付けることで「この変数には文字列しか入れてはいけない」というルールを明示できます。
// TypeScript: 型を付けることで間違いを早めに検出できる
let message: string = "こんにちは";
message = 123; // エラー!string型にnumberは入れられない
この string の部分が「型注釈」です。型注釈は 変数名: 型 という形で書きます。変数名の後ろにコロン(:)を付け、続けて型名を書くのが基本の書き方です。
型注釈を書いておくと、まちがった使い方をしたときにコードを実行する前に気づけます。これがTypeScriptを使う大きなメリットのひとつです。
string(文字列型)— 文字データに付ける型
string は、文字列データに付ける型です。名前・メッセージ・URLなど、文字を扱うすべての場面で登場します。
型注釈の書き方
let userName: string = "田中太郎";
let greeting: string = "こんにちは!";
// テンプレートリテラル(バッククォートで囲んだ文字列)もstring型
let message: string = `ようこそ、${userName}さん`;
テンプレートリテラルとは、バッククォート()で囲んだ文字列のことです。${変数名} の形で変数を文字列に埋め込めます。この書き方も string 型として扱われます。
string と書いた変数には、文字列以外を入れようとするとエラーになります。
let userName: string = "田中太郎";
userName = 42; // エラー:string型にnumber型は代入できない
このエラーが出ることで、「あ、型が違う」とすぐに気づけるわけです。
注意点:String(大文字)は別もの
TypeScriptでは string(小文字)と String(大文字)は別物です。型注釈に使うのは小文字の string です。
let a: string = "正しい書き方"; // ✅ これが正解
let b: String = "大文字は非推奨"; // ⚠️ 動くが、使わない
大文字の String は「Stringオブジェクト」と呼ばれ、プリミティブの文字列とは少し異なります。型注釈では必ず小文字の string を使うと覚えておきましょう。
number(数値型)— 整数も小数も同じひとつの型
number は、数値データに付ける型です。TypeScriptでは整数・小数を区別せず、すべて number 型ひとつで扱います。
型注釈の書き方
let age: number = 25; // 整数
let price: number = 1980.5; // 小数
let score: number = -10; // 負の数
計算にも普通に使えます。
let width: number = 100;
let height: number = 50;
let area: number = width * height; // 5000
注意点:NaNもnumber型に含まれる
NaN(Not a Number)は「数値ではない」という意味の特殊な値ですが、TypeScriptでは number 型として扱われます。
let result: number = NaN; // これもnumber型として受け入れられる
通常の計算では気にしなくていいですが、「NaN も number 型の仲間」ということだけ頭の片隅に置いておいてください。
boolean(真偽値型)— trueかfalseだけを持つ型
boolean は、true(真)か false(偽)のどちらかだけを持つ型です。状態のオン/オフや、条件の結果を表すときに使います。
型注釈の書き方
let isLoggedIn: boolean = false;
let hasPermission: boolean = true;
名前に is〇〇 や has〇〇 を使うと、真偽値の変数だとわかりやすくなります(慣習的なものなので必須ではありません)。
条件分岐での自然な使われ方
boolean 型の変数は、if 文と組み合わせてよく使います。
let isLoggedIn: boolean = true;
if (isLoggedIn) {
console.log("ログイン済みです");
} else {
console.log("ログインしてください");
}
true のときは上の処理、false のときは下の処理へ進みます。TypeScriptの型チェックのおかげで、isLoggedIn に数値や文字列を誤って代入してしまうミスを防げます。
nullとundefined — 「値がない」を表す2つの型
TypeScriptには「値がない状態」を表す型が2つあります。null と undefined です。どちらも「値が存在しない」ことを示しますが、ニュアンスが少し違います。
nullとundefinedはどう違うか
- undefined
まだ何も代入されていない状態。変数を宣言したけど値を入れていない、というイメージです - null
「意図的に空にした」状態。「値がないことがわかっている」という意図を持たせたいときに使います
let notAssigned: undefined = undefined; // まだ値がない
let intentionalEmpty: null = null; // 意図的に空にした
ざっくり言えば、「自然に未定義の状態が undefined、意図して空にするのが null」です。
型注釈の書き方
型注釈として null や undefined を書く場面は、単独ではあまりありません。よく出てくるのは、「文字列かもしれないし、nullかもしれない」という組み合わせのケースです。
let userName: string | null = null; // string か null のどちらかが入る
この | を使った書き方を「ユニオン型」と言います。null や undefined は他の型と組み合わせて使うことが多いと知っておいてください。
型を毎回書かなくていい場合がある — 型推論との関係
ここまでの例ではすべて型注釈を書いてきましたが、実はTypeScriptは「型を書かなくても型が決まる」ことがあります。これを型推論と言います。
let userName = "田中太郎"; // : string と書かなくても、string型と推論される
let age = 25; // : number と書かなくても、number型と推論される
初期値を代入すると、TypeScriptがその値から型を自動で読み取ってくれます。 このケースでは型注釈を省略しても問題ありません。
ただし、「最初は値がなく、後から代入する」場合は型注釈を書いておく方が安全です。
let message: string; // 型注釈を書いておく
message = "後から代入";
symbol型とbigint型 — 存在だけ把握しておく
TypeScriptには symbol や bigint という型も存在します。ただし、知っておくだけで十分な型です。
symbol:一意(ユニーク)な識別子を作るための型。フレームワークや高度な実装で使われますbigint:number型で扱える範囲を超える大きな整数を扱うための型
「こういう型もある」と知っておく程度で十分です。
【付録】さらに学びを深めるためのリソース
さらにTypescriptの学習を進めたい方のために、いくつかのリソースを紹介します。
これらのリソースを活用することで、TypeScriptの型システムについてより深い知識を得ることができるでしょう。
おすすめの書籍
ゼロからわかる TypeScript入門
技術評論社から出版されている「ゼロからわかる TypeScript入門」は、プログラミング初心者や本職プログラマーではない方を主な対象にした入門書です。
変数・条件分岐・ループといった基本から、クラスやインターフェース、モジュールまで段階的に学べる構成になっています。最終章ではWeb APIとJSONを使った非同期Webアプリの作成も体験できるので、「実際に動くものを作る」ところまで到達できます。
プロを目指す人のためのTypeScript入門
技術評論社の「プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで」、通称 ブルーベリー本 です。
JavaScriptの仕様とTypeScript独自の機能を両方押さえつつ、リテラル型・ユニオン型・keyof型・ジェネリクスなど、高度な型表現まで踏み込んで解説しています。TypeScriptの型システムの表現力を本格的に学べる一冊です。
オンラインで参照できる公式ドキュメント
TypeScript公式ハンドブック
https://www.typescriptlang.org/docs/
TypeScriptの公式ドキュメントです。
intersection型を含む、すべての型システムの機能について詳細な説明があります。
TypeScript Deep Dive
https://basarat.gitbook.io/typescript/
TypeScriptの深い部分まで掘り下げて解説しているオンラインブックです。
無料で読むことができ、intersection型についても詳しく説明されています。
TypeScriptの学習は終わりがありません。
新しい機能が常に追加され、より良い書き方が発見されています。
継続的に学習を続けることで、より良いTypeScriptプログラマーになれるはずです。
まとめ — 最初に覚えるプリミティブ型5つ
この記事で紹介したプリミティブ型をまとめます。
| 型 | 意味 | 例 |
|---|---|---|
string |
文字列 | "こんにちは", "田中太郎" |
number |
数値(整数・小数) | 25, 3.14, -10 |
boolean |
真偽値 | true, false |
null |
意図的に空にした値 | null |
undefined |
まだ値が代入されていない状態 | undefined |
型注釈の書き方は 変数名: 型 = 値 というシンプルな形です。まずはこの5種類と書き方を身につけるところから始めましょう。
※本記事の本文案はAIを活用して作成していますが、記載している内容およびコードは筆者が実際に調査、検証・実行し、内容の正確性を確認した上で公開しています。



