TypeScriptでコードを書き始めると、最初につまずくのが「型の書き方」です。

プリミティブ型って何?よく聞くけど、どういう意味なの?
string・number・booleanって全部で何があるの?全部覚えないといけない?
型注釈って実際どう書けばいいんだろう。コードの例を見てもいまいちピンとこない…

この記事では、TypeScriptを学ぶうえで最初に知っておくべき「プリミティブ型」を、実際のコード例をまじえて解説します。今の段階で覚えるべきは5種類だけです。それ以外の型(voidやneverなど)は後回しでまったく問題ありません。

この記事は次のような方におすすめです。

この記事はこんな人におすすめ!
  • TypeScriptを学び始めたばかりで、型の基本的な書き方を知りたい方
  • string・number・booleanの型注釈がどう書くのかを確認したい方
  • 「どの型から覚えればいいか」がわからず迷っている方
  • nullとundefinedの違いが気になっている方

この記事を読み終えると、TypeScriptのプリミティブ型5種類の意味と型注釈の書き方がわかります。コードを書くための第一歩として、まずここを押さえましょう。

それでは、順を追って詳しく見ていきましょう!

プリミティブ型とは — TypeScriptの型システムの出発点

プリミティブ型とは — 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(文字列型)— 文字データに付ける型

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(数値型)— 整数も小数も同じひとつの型

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型として受け入れられる

通常の計算では気にしなくていいですが、「NaNnumber 型の仲間」ということだけ頭の片隅に置いておいてください。

boolean(真偽値型)— trueかfalseだけを持つ型

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つの型

nullとundefined — 「値がない」を表す2つの型

TypeScriptには「値がない状態」を表す型が2つあります。nullundefined です。どちらも「値が存在しない」ことを示しますが、ニュアンスが少し違います。

nullとundefinedはどう違うか

  • undefined
    まだ何も代入されていない状態。変数を宣言したけど値を入れていない、というイメージです
  • null
    「意図的に空にした」状態。「値がないことがわかっている」という意図を持たせたいときに使います
let notAssigned: undefined = undefined; // まだ値がない
let intentionalEmpty: null = null;      // 意図的に空にした

ざっくり言えば、「自然に未定義の状態が undefined意図して空にするのが null」です。

型注釈の書き方

型注釈として nullundefined を書く場面は、単独ではあまりありません。よく出てくるのは、「文字列かもしれないし、nullかもしれない」という組み合わせのケースです。

let userName: string | null = null; // string か null のどちらかが入る

この | を使った書き方を「ユニオン型」と言います。nullundefined は他の型と組み合わせて使うことが多いと知っておいてください。

型を毎回書かなくていい場合がある — 型推論との関係

型を毎回書かなくていい場合がある — 型推論との関係

ここまでの例ではすべて型注釈を書いてきましたが、実はTypeScriptは「型を書かなくても型が決まる」ことがあります。これを型推論と言います。

let userName = "田中太郎"; // : string と書かなくても、string型と推論される
let age = 25;              // : number と書かなくても、number型と推論される

初期値を代入すると、TypeScriptがその値から型を自動で読み取ってくれます。 このケースでは型注釈を省略しても問題ありません。

ただし、「最初は値がなく、後から代入する」場合は型注釈を書いておく方が安全です。

let message: string; // 型注釈を書いておく
message = "後から代入";

symbol型とbigint型 — 存在だけ把握しておく

symbol型とbigint型 — 存在だけ把握しておく

TypeScriptには symbolbigint という型も存在します。ただし、知っておくだけで十分な型です。

  • symbol:一意(ユニーク)な識別子を作るための型。フレームワークや高度な実装で使われます
  • bigintnumber 型で扱える範囲を超える大きな整数を扱うための型

「こういう型もある」と知っておく程度で十分です。

【付録】さらに学びを深めるためのリソース


さらに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つ

まとめ — 最初に覚えるプリミティブ型5つ

この記事で紹介したプリミティブ型をまとめます。

意味
string 文字列 "こんにちは", "田中太郎"
number 数値(整数・小数) 25, 3.14, -10
boolean 真偽値 true, false
null 意図的に空にした値 null
undefined まだ値が代入されていない状態 undefined

型注釈の書き方は 変数名: 型 = 値 というシンプルな形です。まずはこの5種類と書き方を身につけるところから始めましょう。

※本記事の本文案はAIを活用して作成していますが、記載している内容およびコードは筆者が実際に調査、検証・実行し、内容の正確性を確認した上で公開しています。