前回の記事では TypeScriptの配列型 を解説しました。
配列型では
- number[]
- string[]
- User[]
などのデータ構造を安全に扱う方法を説明しました。
今回は Union型とLiteral型 を解説します。
Union型はTypeScriptの中でも非常に重要な型機能で、実務でも頻繁に使われます。
この記事では次の内容を解説します。
- Union型とは
- Union型の使い方
- Literal型
- 実務での利用例
Union型とは
Union型とは
複数の型を許可する型
です。
通常のTypeScriptの型は
let id: number
のように 1つの型しか許可しません。
Union型を使うと
let id: string | number
のように書くことができます。
この場合
id = "abc"
id = 100
どちらも許可されます。
Union型の基本例
例
let value: string | number
value = "hello"
value = 10
これは
string
または
number
という意味になります。
Union型のメリット
Union型を使うメリットは次の通りです。
柔軟な型設計
複数のデータ形式を扱えます。
APIレスポンスに対応
APIでは次のようなケースがあります。
成功 → データ
失敗 → エラーメッセージ
Union型で表現できます。
Union型の型チェック
Union型を使う場合、型チェックを行うことがあります。
例
function print(value: string | number) {
if (typeof value === "string") {
console.log(value.toUpperCase())
} else {
console.log(value.toFixed(2))
}
}
このコードでは
typeof
を使って型を判定しています。
Literal型とは
Literal型とは
特定の値だけ許可する型
です。
例
let direction: "left" | "right"
この場合
direction = "left"
direction = "right"
はOKですが
direction = "up"
はエラーになります。
Literal型のメリット
Literal型は
決まった値
しか使えないデータに便利です。
例
type Theme = "light" | "dark"
状態管理の例
Reactなどでは次のように使います。
type Status = "loading" | "success" | "error"
この型を使うと
let status: Status
は
3つの値
しか使えません。
APIレスポンス例
Union型はAPIレスポンスでも使えます。
例
type ApiResult =
| { success: true; data: string }
| { success: false; error: string }
このように書くことで
成功レスポンス
失敗レスポンス
を安全に扱えます。
Union型 + オブジェクト
Union型はオブジェクトと組み合わせると強力です。
例
type User =
| { role: "admin"; accessLevel: number }
| { role: "user"; subscription: string }
この場合
role
によってデータ構造が変わります。
Union型と型推論
TypeScriptはUnion型でも型推論を行います。
例
let value: string | number = 10
この場合
number
として扱われます。
実務での利用例
Union型は次のような場面で使われます。
APIレスポンス
成功 / エラー
UI状態
loading
success
error
設定値
dark
light
Union型を使うメリット
Union型のメリット
- 柔軟な型設計
- バグ防止
- コードの意味が明確
まとめ
この記事では TypeScriptのUnion型とLiteral型 を解説しました。
重要なポイント
- Union型は複数の型を許可する
|で定義する- Literal型は特定の値だけ許可
- APIや状態管理でよく使う
Union型はTypeScriptの型設計で非常に重要な機能です。
次の記事
次回は
InterfaceとTypeの違い
を解説します。
TypeScriptでは
interface
type
の2つの方法で型定義ができます。
それぞれの違いと使い分けを解説します。


コメント