4️⃣
[TypeScript UtilityTypes] Readonly
TypeScript入門メモ
[Utility Types] Readonly について
Readonly
公式ドキュメント
Typeのすべてのプロパティがreadonlyに設定された型を構築する。
interface Todo {
title: string;
}
const todo: Readonly<Todo> = {
title: "Delete inactive users",
};
todo.title = "Hello";
// Cannot assign to 'title' because it is a read-only property.
このユーティリティは、実行時に失敗するような代入式を表すのに便利(例えば、フリーズしたオブジェクトのプロパティを再代入しようとするとき)
// Object.freeze
function freeze<Type>(obj: Type): Readonly<Type>;
使い所
イミュータブルなオブジェクトの作成:
Readonlyはオブジェクトをイミュータブル(変更不可)にするのに役立つ。
APIレスポンスの保護:
外部APIからのレスポンスデータを扱う際、これらのオブジェクトを読み取り専用にすることで、誤ってデータを変更することを防ぐことができる。
関数の引数の保護:
関数にオブジェクトを渡す際にReadonlyを使用することで、その関数内でオブジェクトが変更されないことを保証できます。これにより、予期せぬ副作用を防ぐことができる。
まとめ
基本的にイミュータブルによるメリットを記述したが、これは個人的にはすごく重宝しそうな機能だと思う。
Discussion