この記事は何?
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で開発する際にめちゃくちゃ使っています!!