TypeScript Utility Types完全ガイド【実務でよく使う型】
TypeScriptには
Utility Typesと呼ばれる便利な型が用意されています。
Utility Typesを使うことで
- 型を簡単に再利用できる
- コードを短くできる
- 型安全を保てる
というメリットがあります。
この記事では
実務でよく使われるUtility Typesを紹介します。
Utility Typesとは?
Utility Typesとは
既存の型を変換するための便利な型です。
例えば
- プロパティをオプションにする
- 一部の型だけ取り出す
- 型を除外する
といった操作が簡単にできます。
1 Partial
すべてのプロパティをオプション(?)にする型です。
interface User {
id: number
name: string
age: number
}
type UpdateUser = Partial<User>結果
{
id?: number
name?: string
age?: number
}実務では
更新APIでよく使われます。
2 Required
すべてのプロパティを必須にする型です。
type UserRequired = Required<User>結果
{
id: number
name: string
age: number
}3 Readonly
プロパティを変更不可にする型です。
type ReadonlyUser = Readonly<User>結果
{
readonly id: number
readonly name: string
readonly age: number
}変更しようとするとエラーになります。
user.name = "Hanako"4 Pick
指定したプロパティだけ取り出す型です。
type UserName = Pick<User, "name">結果
{
name: string
}5 Omit
指定したプロパティを除外する型です。
type PublicUser = Omit<User, "age">結果
{
id: number
name: string
}6 Record
キーと値の型を定義できます。
type UserRoles = Record<string, string>例
const roles: UserRoles = {
admin: "full",
guest: "read"
}7 Exclude
Union型から特定の型を除外します。
type Status = "success" | "error" | "loading"
type Result = Exclude<Status, "loading">結果
"success" | "error"8 Extract
Union型から特定の型だけ取得します。
type Result = Extract<Status, "success">結果
"success"Utility Typesの実務例
APIレスポンスなどでよく使われます。
interface User {
id: number
name: string
age: number
email: string
}更新API
type UpdateUser = Partial<User>公開用データ
type PublicUser = Omit<User, "email">このように
型を簡単に変換できますまとめ
TypeScriptのUtility Typesを使うと型を柔軟に操作できます。
よく使われる型はこちらです。
| Utility | 内容 |
|---|---|
| Partial | 全てオプション |
| Required | 全て必須 |
| Readonly | 変更不可 |
| Pick | 一部のプロパティ |
| Omit | プロパティ除外 |
| Record | キー型指定 |
| Exclude | 型除外 |
| Extract | 型抽出 |
これらを使うことで
TypeScriptのコードをシンプルに保つことができます。
次回は、TypeScript 型ガード(Type Guards)

コメント