TypeScriptはJavaScriptに型の概念を導入したスーパーセットの言語です。型を活用することで、バグの予防やコード補完の強化ができ、より安全で保守しやすいコードが書けるようになります。ここでは、TypeScriptでよく使う型や便利な型について簡潔にまとめます。
✨ 基本の型(プリミティブ型)
型名 | 説明 | 例 |
---|---|---|
string |
文字列 | "hello" |
number |
数値(整数・小数) |
42 , 3.14
|
boolean |
真偽値 |
true , false
|
null |
null値 | null |
undefined |
未定義値 | undefined |
bigint |
大きな整数 | 1234567890n |
symbol |
一意の識別子 | Symbol("id") |
▶️ 配列とオブジェクトの型
let names: string[] = ["Alice", "Bob"];
interface User {
name: string;
age: number;
}
const user: User = { name: "Taro", age: 25 };
🎉 ユニオン型
複数の型のうちのどれかを許容する型。
let value: string | number;
value = "hello"; // OK
value = 42; // OK
type OperationType = "CREATE" | "UPDATE" | "DELETE";
🌓 リテラル型
特定の値のみを許容する型。
let status: "success" | "error";
📄 型エイリアス(type)とインターフェース(interface)
type ID = string | number;
interface Product {
id: ID;
name: string;
}
🧱 Enum(列挙型)
あらかじめ決められた定数のセットを表現する型。
enum Status {
SUCCESS = "SUCCESS",
ERROR = "ERROR",
PENDING = "PENDING"
}
const current: Status = Status.SUCCESS;
- JavaやC言語にもある「列挙型」と似た構文。
- 実行時にもオブジェクトとして保持される(逆引きも可能)。
- ただし、バンドルサイズや柔軟性の面では
as const
+ union 型が使われることも多い。
💡 Record
オブジェクトのキーと値の型を指定するユーティリティ型。
type QueueType = "EMAIL" | "SMS" | "PUSH";
const queueUrls: Record<QueueType, string> = {
EMAIL: "https://...",
SMS: "https://...",
PUSH: "https://...",
};
💡 よく使うユーティリティ型
型名 | 説明 |
---|---|
Partial<T> |
全てのプロパティを任意にする |
Required<T> |
全てのプロパティを必須にする |
Readonly<T> |
全てのプロパティを読み取り専用にする |
Pick<T, K> |
特定のプロパティだけを取り出す |
Omit<T, K> |
特定のプロパティを除外する |
🤓 keyof typeof と as const
const Operation = {
PARSE: "PARSE",
EDIT: "EDIT",
EMBED_PDF: "EMBED_PDF",
} as const;
// "PARSE" | "EDIT" | "EMBED_PDF"
type OperationType = keyof typeof Operation;
-
as const
を使うことで、オブジェクトの値がリテラル型(固定された文字列)になる -
keyof typeof
は、そのオブジェクトのキー名を文字列リテラルのUnion型として抽出
🔍 まとめ
TypeScriptの型を使いこなすことで、より安全で自動補完の効いた開発ができるようになります。
特に、ユニオン型・リテラル型・Record
・keyof typeof
・enum
などは実践で頻出なので、積極的に使っていきましょう!