TypeScriptのUtility Typesについて
TOC
Utility Typesとは
TypeScriptのUtility Typesは、TypeScriptが提供する組み込みの型操作で、型に対してさまざまな変換や操作を行うことができます。これにより、コードの再利用性とメンテナンス性を向上させることができます。以下に、よく使用されるUtility Typesを紹介します。
Partial
Partialは、オブジェクトのすべてのプロパティをオプションにすることができます。これは、オブジェクトの一部のプロパティしか必要ない場合に便利です。以下は、Partialを使用してオブジェクトの一部のプロパティをオプションにする例です。
interface User {
name: string;
age: number;
address: string;
}
function updateUser(user: Partial<User>): void {
// ...
}
// 使用例
updateUser({ name: 'John', age: 30 }); // addressプロパティはオプション
Required
Requiredは、オブジェクトのすべてのプロパティを必須にすることができます。これは、オブジェクトのすべてのプロパティが必要な場合に便利です。以下は、Requiredを使用してオブジェクトのすべてのプロパティを必須にする例です。
interface User {
name?: string;
age?: number;
address?: string;
}
function createUser(user: Required<User>): void {
// ...
}
// 使用例
createUser({ name: 'John', age: 30, address: 'Tokyo' }); // すべてのプロパティが必須になる
Readonly
Readonlyは、オブジェクトのすべてのプロパティを読み取り専用にすることができます。これは、オブジェクトを変更できないようにする場合に便利です。以下は、Readonlyを使用してオブジェクトのすべてのプロパティを読み取り専用にする例です。
interface User {
name: string;
age: number;
address: string;
}
// 使用例
const user: Readonly<User> = { name: 'John', age: 30, address: 'Tokyo' };
Omit
Omitは、オブジェクトから特定のプロパティを除外することができます。以下は、Omitを使用してオブジェクトから特定のプロパティを除外する例です。
interface User {
id: string;
name: string;
age: number;
address: string;
}
type UserWithoutId = Omit<User, 'id'>;
// 使用例
const user: UserWithoutId = { name: 'John', age: 30, address: 'Tokyo' };
Pick
Pickは、オブジェクトから特定のプロパティだけを選択することができます。以下は、Pickを使用してオブジェクトから特定のプロパティだけを選択する例です。
interface User {
id: string;
name: string;
age: number;
address: string;
}
type UserPickNameAge = Pick<User, 'name' | 'age'>;
// 使用例
const user: UserPickNameAge = { name: 'John', age: 30 };
Exclude
Excludeは、2つの型から共通の部分を除外した新しい型を作成することができます。以下は、Excludeを使用して2つの型から共通の部分を除外した新しい型を作成する例です。
type Numbers = 1 | 2 | 3 | 4 | 5;
type EvenNumbers = 2 | 4 | 6;
type OddNumbers = Exclude<Numbers, EvenNumbers>;
// 使用例
const oddNumbers: OddNumbers = 1 | 3 | 5;
ReturnType
ReturnTypeは、関数の戻り値の型を取得することができます。以下は、ReturnTypeを使用して関数の戻り値の型を取得する例です。
function add(a: number, b: number): number {
return a + b;
}
type AddReturnType = ReturnType<typeof add>;
// 使用例
const result: AddReturnType = 3; // 2つの引数を足した結果が3になる
Parameters
Parametersは、関数の引数の型をタプルとして取得することができます。以下は、Parametersを使用して関数の引数の型をタプルとして取得する例です。
function greet(name: string, age: number): void {
console.log(`Hello, ${name}! You are ${age} years old.`);
}
type GreetParameters = Parameters<typeof greet>;
// 使用例
const params: GreetParameters = ['John', 30];
greet(...params); // "Hello, John! You are 30 years old." と表示される