22
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TypeScriptのUtility Typesを理解して活用する

Last updated at Posted at 2021-03-07

この記事は何?

TypeScriptのUtility Typesの概要について紹介する記事です。

Utility Typesとは?

そもそも英単語としてのUtilityの意味は、実用性や役に立つということのようです。

utility [名]
実用性、役に立つこと、用役、有用性、効用
https://eow.alc.co.jp/search?q=utility

TypeScriptにおけるUtility Typesとは、
TypeScriptが提供する関数のような便利な機能の型になります。

また、公式にはこう書いてあります

TypeScript provides several utility types to facilitate common type transformations.
TypeScriptは、一般的な型変換を容易にするいくつかのユーティリティ型を提供します。

型を変換する時に使うものがUtility Typesと思って良さそうです。

具体例

定義だけ見てもわかりずらいので、実際に使用例を見てみましょう。
実務でもめちゃくちゃ使うPickについてです。

説明の例として、ある型Todoを作ったとします。

interface Todo {
  title: string;
  description: string;
  completed: boolean;
  pending: boolean;
  percentage: number;
}

これを使いまわして、あるオブジェクトで使いたいのですが、
必要なのはtitle, descriptionだけの時、
同じように記述するのは、なんだか冗長な気がします。

その時に活躍するのがPickです。

type TodoPreview = Pick<Todo, "title" | "description">;

これにより、型Todoから新しい型TodoPreviewを作成することが出来ました。
TodoPreviewは以下と同義です。

interface TodoPreview {
  title: string;
  description: string;
}

このようにPickでは、既にある型から一部だけピックして、新しい型を作ることが出来ます。

以上のように、型定義をスマートに書くことが出来るものUtility Typesの一例になります。

Utility Types一覧

Utility Typesはたくさんあります。
全部覚える必要はないと思いますが、それぞれ簡単に理解しておくと、よりスマートなコーディングに活用できるかもしれません。

  • Partial<Type>: Typeをオプショナル型にして型を作成
  • Required<Type>
  • Readonly<Type>: ReadOnlyな型を作成
  • Record<Keys,Type>: 型を組み合わせてオブジェクトの型を作成
  • Pick<Type, Keys>: TypeからKeysを取得する型
  • Omit<Type, Keys>: TypeからKeysを除外する型
  • Exclude<Type, ExcludedUnion>: Typeの中から指定したUnion型を取り除いて、新しい型を作成
  • Extract<Type, Union>: Typeの中から指定したUnion型を抜き取って、新しい型を作成
  • NonNullable<Type>
  • Parameters<Type>: Type(関数の引数)から型を作成する
  • ConstructorParameters<Type>
  • ReturnType<Type>: 関数の返り値の型で型を作成
  • InstanceType<Type>
  • ThisParameterType<Type>
  • OmitThisParameter<Type>
  • ThisType<Type>
  • Intrinsic String Manipulation Types
  • Uppercase<StringType>
  • Lowercase<StringType>
  • Capitalize<StringType>
  • Uncapitalize<StringType>

おわりに

この記事では、Utility Typesそのものを簡単に紹介しました。
場面にあったUtility Typesを利用して、快適なコーディングライフとサービスの品質を向上させちゃいましょう!
自分は、Reactで開発する際にめちゃくちゃ使っています!!

参考にした記事

22
10
1

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
22
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?