TypeScriptの組み込み型関数①
2019/06/11
Partial
プロパティを任意化させることができます。
一部のプロパティを Partial 化する場合
type Person = {
// ageが任意項目
age?: number;
name: string;
};
// Partial化している為、必須項目が無くてもコンパイルエラーにならない
const user: Partial<Person> = {age: 22};
// Partial化していない為、コンパイルエラーになる
const user2: Person = {age: 22};
全てのプロパティを Partial 化する場合
type Person = {
age: number;
name: string;
};
// Partial化している為、コンパイルエラーにならない
const user2: Partial<Person> = {};
Required
プロパティを必須化させることができます。 Partial の真逆です。
type Person {
name: string,
age: number
}
const user2: Required<Person> ={age:22,name:"Yamada"}
ReadOnly
プロパティを読み取り専用にし、再代入不可にします。
type Person = {
name: string;
age: number;
};
const user: Readonly<Person> = {
name: 'Yamada',
age: 22,
};
// Cannot assign to 'name' because it is a read-only property.
user.name = 'Tanaka';
Pick
定義した型から任意のプロパティを抜き出し、新しい型を作成します。
type Person = {
name: string;
age: number;
};
// Person型から"name"プロパティのみを取り出す。
const user: Pick<Person, 'name'> = {
name: 'tanaka',
};
// "name"プロパティのみ取り出している為、コンパイルエラーになる。
// Type '{ name: string; age: number; }' is not assignable to type 'Pick<Person, "name">'.
const user: Pick<Person, 'name'> = {
name: 'Yamda',
age: 22,
};
Record
プロパティを一気にまとめて型定義をすることができる。
// key名を"Tanaka"と"Yamada"のみ許容する。
type Users = "Tanaka" | "Yamada"
//valueの型付けを行う
type Info = { [key: string]: string }
// keyにUsers,valueにInfoを使用する。
// Infoは配列の為オブジェクトにするとコンパイルエラーになる
const userGroup: Record<Users, Info[]> = {
Tanaka: [{ city: "Osaka" }, { firstName: "Ichiro" }],
Yamada:[{city:"Tokyo"}]
// Usersが"Tanaka"|"Yamada"なのでエラーになる。
// "Tanaka"|"Yamada"|"Kato"にすれば使用できる
Kato:[{city:"Kyoto"}]
}