インタフェースのプロパティの前に、 readonly
キーワードを付けると、そのプロパティは読み取り専用になり、オブジェクト生成時に格納した値を変更できなくなります。
次の Book
インタフェースは 3 つのプロパティを持ちますが、そのうち id
プロパティだけがリードオンリーとして定義されています。
interface Book {
readonly id: string; // id プロパティはリードオンリー
title: string;
price: number;
}
次の例では Book
オブジェクトを作成した後で各プロパティの値を変更しようとしていますが、id
プロパティを変更しようとしている部分でトランスパイルエラーになります。
const book: Book = {
id: '001', title: 'TypeScript is Awesome', price: 2300
};
book.id = '002'; // Error: リードオンリープロパティ
book.title = 'TypeScript is Horrible';
book.price = 800;