2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TSの鬼 第3回:配列・オブジェクト・ユニオン型を制す

Last updated at Posted at 2025-06-22

はじめに

前回

TypeScriptの真価が発揮されるのは、複数の型が複雑に絡むときである。
その第一歩が、「配列型」「オブジェクト型」「ユニオン型」の理解である。

これらを使いこなせば、現実のデータ構造をTypeScript上で精密に表現できるようになる。
今回はこの3つを中心に、実践的な使い方と設計上の考え方を整理する。


配列型:繰り返しの構造に型を与える

配列は同じ型の要素が並ぶ構造である。型の表現は以下のようになる。

const numbers: number[] = [1, 2, 3];
const names: string[] = ["Alice", "Bob"];

別の書き方として、ジェネリック形式もある。

const values: Array<boolean> = [true, false];

通常は number[] などの形式が読みやすいため、そちらが好まれる。

多次元配列

const matrix: number[][] = [[1, 2], [3, 4]];

構造が深くなるほど、どの階層にどの型があるかを明確にしておく必要がある。


オブジェクト型:構造に意味を持たせる

現実のデータは、複数の情報が1つの塊として表現されることが多い。
オブジェクト型はその基本単位である。

const user: { id: number; name: string; isActive: boolean } = {
  id: 1,
  name: "Yuki",
  isActive: true
};

ただし、同じような型を何度も書く場合は、型エイリアスを使うべきである。

type User = {
  id: number;
  name: string;
  isActive: boolean;
};

const user1: User = { id: 1, name: "Taro", isActive: true };

このようにすることで、可読性と保守性が向上する。


ユニオン型:1つの値が複数の型を取り得るとき

ユニオン型は、 「この値は A または B の型を取る」 というケースを明示できる。

let status: "success" | "error" | "loading";
status = "success";
status = "error";

これは文字列リテラルのユニオンであり、“限定された選択肢” として非常に強力である。

もちろん、プリミティブ型にも使える。

let value: number | string;
value = 10;
value = "ten";

このような使い方は、柔軟性と型安全のバランスを取る上で重要である。


実務上の設計ポイント

  1. 配列に対しては要素型を明確に定義すること
  2. オブジェクトは型エイリアスまたはinterfaceで共通化すること
  3. ユニオン型は限定された入力値(状態や分類)に使うと有効である

特にユニオン型は、状態管理や条件分岐において “漏れのない設計” を可能にする。
ただし、乱用は危険。変数に入る型は1つに限定する方がもちろん良い。


まとめ:複数の型を制御する技術を身につける

配列・オブジェクト・ユニオン型は、

  • 複数のデータをどうまとめるか?
  • 構造にどう意味を持たせるか?
  • 選択肢をどう制限するか?

という観点から、TypeScript設計の核心と言える。

この3つをマスターすることで、コードの「意図」「設計意識」「防御力」は飛躍的に向上する。


次回予告

『TSの鬼 第4回:anyは敵か味方か?unknownとの違いを知れ』

次回はTypeScriptの闇とされるany型と、意外と知られていないunknown型の違いについて深堀りする。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?