TypeScript入門 第7回

TypeScript

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)

コメント

タイトルとURLをコピーしました