TypeScript Created: 2026/04/25 Updated: 2026/04/30

TypeScriptの基本の型を徹底解説|string・number・booleanから理解する

TypeScriptの基本の型(string・number・boolean・arrayなど)を初心者向けにわかりやすく解説。型の書き方や役割を理解し、TypeScriptの基礎をしっかり身につけましょう。

全8回シリーズ — 目次

1 TypeScriptとは

2 環境構築

3 基本の型

4 関数と型

5 インターフェイス

6 クラス

7 実践的な型

8 便利機能まとめ

🎯 この記事のゴール

TypeScriptの基本的な型を一通り書けるようになること。「型を書く意味」を体で覚えるため、コードを実際に動かしながら読み進めてください。

まず実行ファイルを用意しよう

第2回で作ったプロジェクトに、今回用のファイルを追加します。Bunの場合はtypes.ts 、Node.jsの場合はsrc/types.ts を作成してください。

Bunの場合

bash
touch types.ts
bun --watch run types.ts

Node.js + npm の場合

bash
touch src/types.ts
npx tsc --watch  # 別ターミナルで起動
node dist/types.js

プリミティブ型:string / number / boolean

TypeScriptで最もよく使う3つの基本型です。変数や関数の引数に: 型名 と書くだけで型注釈を付けられます。

string

"hello" / 'world' / `template`

文字列。テンプレートリテラルも含む。

number

42 / 3.14 / -1 / NaN

整数・小数どちらも同じ型。intとfloatの区別はない。

boolean

true / false

真偽値。条件分岐によく登場する。

typescript
// string
const name: string = "Alice";
const greeting: string = `こんにちは、${name}さん`;

// number
const age: number = 28;
const pi: number = 3.14;

// boolean
const isLoggedIn: boolean = true;

console.log(greeting); // → こんにちは、Aliceさん
console.log(age, pi);   // → 28 3.14
console.log(isLoggedIn); // → true

// 型が合わなければコンパイルエラー
const score: number = "100"; // エラー: string は number に代入不可

Bunで実行

bash
bun run types.ts
#こんにちは、Aliceさん
#28 3.14
#true

Node.js + npm で実行

bash
npx tsc && node dist/types.js
#こんにちは、Aliceさん
#28 3.14
#true

配列型:array

配列の型は「要素の型 +[] 」で表現します。書き方は2通りありますが、意味は同じです。

typescript
// 書き方① 型[](よく使う)
const fruits: string[] = ["apple", "banana", "cherry"];
const scores: number[] = [80, 95, 72];

// 書き方② Array<型>(ジェネリクス記法)
const colors: Array<string> = ["red", "blue"];

fruits.push("grape");   // OK
fruits.push(42);         // エラー: number は string[] に追加不可


console.log(fruits);
console.log(scores[0]);
console.log(colors);

Bunで実行

bash
bun run types.ts
# [ "apple", "banana", "cherry", "grape" ]
# 80
# [ "red", "blue" ]

Node.js + npm で実行

bash
npx tsc && node dist/types.js
# [ 'apple', 'banana', 'cherry', 'grape' ]
# 80
# [ 'red', 'blue' ]

オブジェクト型:object

オブジェクトは{ プロパティ名: 型 } の形で型を定義します。? を付けると省略可能なプロパティになります。

typescript
const user: { name: string; age: number; isAdmin: boolean } = {
  name: "Bob",
  age: 32,
  isAdmin: false,
};

console.log(user.name);  // → Bob
console.log(user.age);   // → 32
console.log(user.email); // エラー: 'email' は型に存在しない


// オプショナルプロパティ(? をつけると省略可能)
const product: { title: string; price: number; description?: string } = {
  title: "TypeScript本",
  price: 2800,
};
console.log(product.description); // → undefined

Bunで実行

bash
bun run types.ts
# Bob
# 32
# undefined

Node.js + npmで実行

bash
npx tsc && node dist/types.js
# Bob
# 32
# undefined

🔍 先取りポイント

オブジェクトの型をインラインで毎回書くのは冗長です。第5回で学ぶinterface type を使うと型に名前をつけて再利用できます。

any と unknown — 使い分けが重要

型が確定できない場面に出てくる2つの型です。見た目は似ていますが安全性がまったく異なります。

any — 危険

型チェックを 完全に無効化 する。TypeScriptの恩恵がゼロになるため、原則として使わない。

unknown — 安全

「型が不明」を型で表現する。使う前に 型ガードが必須 になるため、安全に扱える。

typescript
// any の問題点

let value: any = "hello";
value = 42;
value = true;
// コンパイルは通るが実行時エラーになる可能性がある
console.log(value.toFixed(2));
console.log(value.nonExistent);
typescript
// unknown の安全な使い方

let value: unknown = "hello";

console.log(value.toUpperCase()); // エラー: unknown 型には直接アクセス不可


// typeof で型を絞り込んでから使う(型ガード)
if (typeof value === "string") {
  console.log(value.toUpperCase()); // → HELLO
}

Bunで実行

bash
bun run types.ts
# HELLO

Node.js + npm で実行

bash
npx tsc && node dist/types.js
# HELLO

✨ 実務のルール

any は「TypeScriptをJavaScriptに戻す」のと同じです。型が不明な場面ではunknown を使い、必ず型ガードを挟む習慣をつけましょう。

void と never — 関数の戻り値に使う型

意味 主な用途
void 値を返さない(undefinedを返す) 副作用だけの関数(ログ出力、状態更新など)
never 絶対に値が返らない 必ず例外を投げる関数、無限ループ
typescript
// void と never の例

// void: 値を返さない関数
function logMessage(msg: string): void {
  console.log(`[LOG] ${msg}`);
}

logMessage("起動しました"); // → [LOG] 起動しました

// never: 絶対に戻ってこない関数
function throwError(message: string): never {
  throw new Error(message);
}

type Status = "active" | "inactive";

function checkStatus(status: Status): string {
  if (status === "active")   return "有効";
  if (status === "inactive") return "無効";
  return throwError("到達不能なコード");
}

console.log(checkStatus("active")); // → 有効

Bunで実行

bash
bun run types.ts
# [LOG] 起動しました
# 有効

Node.js + npm で実行

bash
npx tsc && node dist/types.js
# [LOG] 起動しました
# 有効

型注釈の書き方パターンまとめ

typescript
# 型注釈パターン集

/ ① 変数
const title: string = "TypeScript入門";
let   count: number = 0;

// ② 関数の引数と戻り値
function multiply(a: number, b: number): number {
  return a * b;
}

// ③ アロー関数
const double = (n: number): number => n * 2;

// ④ 配列
const ids: number[] = [1, 2, 3];

// ⑤ オブジェクト
const config: { debug: boolean; version: string } = {
  debug: false,
  version: "1.0.0",
};

// ⑥ 型推論(型を書かなくても自動で推論)
const inferred = "TypeScript"; // 自動で string 型
const num      = 42;            // 自動で number 型

console.log(multiply(4, 5)); // → 20
console.log(double(7));      // → 14

Bunで実行

bash
bun run types.ts
# 20
# 14

Node.js + npm で実行

bash
npx tsc && node dist/types.js
# 20
# 14

💡 型推論について

値から型が明らかな場合、TypeScriptは自動で型を推論します。すべてに型注釈を書く必要はなく、 「読む人に型が伝わるか」を基準に使い分ける のが実務での正解です。

📌 第3回のまとめ

string /number /boolean の3大プリミティブ、配列・オブジェクトの型注釈、any vsunknown void /never を学びました。 anyを避けてunknownを使う のが実務の第一歩。次回は関数の型定義を深掘りします。

📝 ▶ 次のステップ

次は「 」を解説します
TypeScriptの関数と型を解説\n引数・戻り値・アロー関数の書き方
TypeScript

TypeScriptの関数と型を解説 引数・戻り値・アロー関数の書き方

TypeScriptの関数と型の書き方を初心者向けに解説。引数や戻り値の型指定、オプション引数、アロー関数の使い方まで実例付きで理解できます。