【TypeScript】【ユーティリティ型(Utility Types)】を理解する

はじめに

この記事は【TypeScript】+【ユーティリティ型(Utility Types)】についての導入方法の備忘録である。

【ユーティリティ型(Utility Types)】とは

ユーティリティ型(Utility Types) とはコード内で型変換を容易にする為にTypeScript が提供する(便利な関数のような)型達である。
ここではユーティリティ型のうち、主要なものだけを取り上げる。
興味がある方は公式やソースコードを参照する。

Partial<T>

Partial<T> は、オブジェクトの型 T の全てのプロパティをオプションプロパティにするユーティリティ型である。

Partialの使用例
type Person = {
  surname: string;
  middleName?: string;
  givenName: string;
};
type PartialPerson = Partial<Person>;
// 上記は以下と同じ意味である
type PartialPerson = {
    surname?: string | undefined;
    middleName?: string | undefined;
    givenName?: string | undefined;
}

Readonly<T>

Readonly<T>は、オブジェクトの型Tのプロパティをすべて読み取り専用にするユーティリティ型である。

Readonlyの使用例
type Person = {
  surname: string;
  middleName?: string;
  givenName: string;
};
type ReadonlyPerson = Readonly<Person>;
// 上記は以下と同じ意味である
type ReadonlyPerson = {
    readonly surname: string;
    readonly middleName?: string | undefined;
    readonly givenName: string;
}

Record<Keys, Type>

Record<Keys, Type>はプロパティのキーがKeysであり、プロパティの値がTypeであるオブジェクトの型を作るユーティリティ型である。

Recordの使用例
// キーがstringで値がnumberのインデックス型を定義する。
type StringNumber = Record<string, number>;
const value: StringNumber = { a: 1, b: 2, c: 3 };
// キーがfirstName、middleName、familyNameで、値が文字列になるオブジェクトの型を定義する。
type Person = Record<"firstName" | "middleName" | "lastName", string>;
const person: Person = {
  firstName: "Robert",
  middleName: "Cecil",
  lastName: "Martin",
};

コメント

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