Javascript 通过 Proxy 设置枚举

具体代码

export function Enum(baseEnum) {  
  return new Proxy(baseEnum, {
    get(target, name) {
      if (!baseEnum.hasOwnProperty(name)) {
        throw new Error(`"${name}" value does not exist in the enum`)
      }
      return baseEnum[name]
    },
    set(target, name, value) {
      throw new Error('Cannot add a new value to the enum')
    }
  })
}

使用方法

const MyEnum = Enum({
  Option1: 'option1',
  Option2: 'option2',
  Option3: 'option3'
})

优点: 枚举值不会被更改

const options1 = MyEnum.Option1 = "option4"
//caught Error: Cannot add a new value to the enum
posted @ 2023-04-21 09:04  xxcf  阅读(33)  评论(0)    收藏  举报