はじめに
TypeScriptにおいて、Readonly<T>
とas const
は、オブジェクトや配列をイミュータブルにするための非常に便利な機能です。この記事では、これらの特性をどのように利用するかを解説します。
セクション1: Readonlyの基本
Readonly<T>
型は、型T
のすべてのプロパティを読み取り専用にします。これにより、オブジェクトのプロパティ値の変更を防ぐことができます。
interface Example {
prop: string;
}
const example: Readonly<Example> = { prop: "Hello" };
// 以下のコードはコンパイルエラーになります
example.prop = "Hi"; // Error! Cannot assign to 'prop' because it is a read-only property.
セクション2: 関数パラメータとしてのReadonly
関数のパラメータとしてReadonly<T>
を使用することで、関数内でオブジェクトのプロパティが変更されないことを保証できます。
function doSomething(obj: Readonly<Example>) {
// 以下のコードはコンパイルエラーになります
obj.prop = "Hi"; // Error! Cannot assign to 'prop' because it is a read-only property.
}
セクション3: as const の使用
as const
は、オブジェクトや配列をリテラル型として扱うことができるTypeScriptの構文です。これにより、変数が持つ値が唯一のリテラルとなり、それ以上狭い型になります。
const example = { prop: "Hello" } as const;
// 以下のコードはコンパイルエラーになります
example.prop = "Hi"; // Error! Cannot assign to 'prop' because it is a read-only property.
まとめ
Readonly<T>
とas const
はTypeScriptでイミュータブルなコードを書く際に重要なツールです。これらを適切に使用することで、コードの安全性と堅牢性を向上させることができます。