特定の文字列以外が来てほしくないしエディターに強制してほしい!
そう思ったことは、人生で1度や2度ではないはずです。
フィールドを全部Read Onlyにするas const
と型定義で実現することができますよ
- 宣言時から変更・更新されないことが保証される。
- ReadOnlyな要素は型として指定することができる! ☜ これが嬉しい
宣言のやり方
const YousoList = [
"要素1",
"要素2",
"要素3",
"要素4",
] as const
export type yousoType = typeof YousoList[number];
// 以下と同値になる
export type yousoType2 = "要素1" | "要素2" | "要素3" | "要素4" ;
直接 |
でつなぐものとas constの違い
- Enum的な挙動をする型には
literal-types
と呼ばれるものがある。 - これは、特定の文字列で型を判断することができる機能である。
- as const導入前にこれをやろうとすると型定義の変数と実際に使う変数の2か所を変更しなければならず大変だった。