Dev Study
TypeScript コース

37. as const — 値をリテラル型で固定する

const で宣言したオブジェクトでも、プロパティの型は "dark" ではなく string のように広い型に推論されます(これを widening と呼びます)。値の後ろに as const を付けると、この広がりが抑えられ、すべてのプロパティが書いたとおりのリテラル型かつ readonly で固定されます。

実務では、アプリの設定値や選択肢の一覧など「この値は二度と変わらない」データに使います。値がリテラル型として残るので、リテラル型を要求する関数にそのまま渡せるようになり、定数の定義が型の世界でもそのまま活きます。

つまずきポイントは、as const を付けた値が readonly になることです。配列に as const を付けると push などの変更系メソッドが使えなくなります。エラーが出たら「固定したのだから書き換えられない」のが正しい挙動だと思い出しましょう。

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

TypeScript
サンプルコードで身につける(5本) →

学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。

公式ドキュメントで詳しく ↗