はじめに
この記事は【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",
};
コメント