オブジェクト型の発展的機能
TSではオブジェクト型に使える型の機能がいくつかあるので紹介します。
オプショナルプロパティ
オプショナルとは、あってもなくてもどっちでも自由なもののことを言います。
プロパティをオプショナルにすることにより、必要な時にだけ指定することができます。
const a: {
name: string,
age?: number,
// ↑ プロパティに?をつける
} = {
name: 'eraser'
age: 21
}
const b: {
name: string,
age?: number,
} = {
name: 'eraser'
// ageプロパティを指定しなくてもOK
}
リードオンリープロパティ
JSのオブジェクトにはプロパティの読み込み、書き込みどちらもデフォルトで行うことができます。
しかし、書き換えて欲しくない場合もあります。そんな時に使うのがリードオンリープロパティ。
const a: {
readonly name: string,
age: number
} = {
name: "eraser",
age: 21
}
a.name // OK! 中身を読むことはできる
a.name = 'matumoto' // ERROR! 書き込みはできない