🔒

TypeScript readonlyとas constの使い方

2023/09/27に公開

はじめに

TypeScriptにおいて、変数やプロパティの再代入を防ぐために、readonlyキーワード、as const構文、そしてReadonly<T>型が提供されています。これらの機能は、コードの安全性を向上させ、不具合を未然に防ぐことに役立ちます。本記事では、これらの違いと、特に関数での利用法に焦点を当てて解説します。

readonly 修飾子

readonly修飾子は、クラスやインターフェースのプロパティに適用されます。この修飾子が付与されたプロパティは、再代入が不可能となります。

class Example {
  readonly prop: string = "Hello";
}

interface ExampleInterface {
  readonly prop: string;
}

Readonly<T> 型

Readonly<T>型は、型Tの全てのプロパティを読み取り専用にします。これにより、オブジェクト全体を簡単にreadonlyにすることができます。

interface Example {
  prop: string;
}

const example: Readonly<Example> = { prop: "Hello" };

as const 構文

as const構文を利用すると、リテラル型のオブジェクトや配列を作成することができます。これにより、全てのプロパティや要素がreadonlyとなります。

const example = {
  prop: "Hello"
} as const;

まとめ

TypeScriptのreadonly関連の機能は、変数やプロパティの不要な再代入を防ぐことで、コードの安全性を向上させます。これらの機能を適切に利用することで、バグを予防し、メンテナンス性の高いコードを書くことができます。

Discussion