列挙(Enum)とは
多くのプログラミング言語では、列挙型(Enum)があります。
JavaScriptのビルトインオブジェクトにはこの機能がないので独自で作成してみます。
配列で作る
const fruits = ['🍎', '🍌', '🍇']
配列を使用すると、果物の一覧を保存できますが、
利用者は配列の順序を覚えておく必要があります。
console.log(fruits[0])
// 0要素目が'🍎'であることを覚えている必要がある
オブジェクトで作る
これは、オブジェクトを使用することで解決できます。
const fruits = {
apple: '🍎',
banana: '🍌',
grape: '🍇',
orange: '🟠',
}
オブジェクトを使用すると、配列のようにインデックスを指定する必要がなくなります。
console.log(fruits.apple) // 🍎
しかし、まだプロパティを編集または削除できてしまうという問題があります。
JavaScript列挙型の作成
列挙型として使うためには、読み取り専用にする必要があります。
これはObject.freeze()
を使用することで実現できます。
const fruits = Object.freeze({
apple: '🍎',
banana: '🍌',
grape: '🍇',
orange: '🟠',
})
fruits.apple = 'りんご'
console.log(fruits.apple) // 🍎
これで、プロパティが編集されるのを防ぐことができます。