便利的定义枚举值

方法定义

  1. /**
  2. * 枚举定义工具
  3. * 示例:
  4. * const STATUS = createEnum({
  5. * AUDIT_WAIT: [1, '审核中'],
  6. * AUDIT_PASS: [2, '审核通过']
  7. * })
  8. * 获取枚举值:STATUS.AUDIT_WAIT
  9. * 获取枚举描述:STATUS.getDesc('AUDIT_WAIT')
  10. * 通过枚举值获取描述:STATUS.getDescFromValue(STATUS.WAIT)
  11. *
  12. */
  13. export default function createEnum(definition) {
  14. const strToValueMap = {}
  15. const numToDescMap = {}
  16. for (const enumName of Object.keys(definition)) {
  17. const [value, desc] = definition[enumName]
  18. strToValueMap[enumName] = value
  19. numToDescMap[value] = desc
  20. }
  21. return {
  22. ...strToValueMap,
  23. getDesc(enumName) {
  24. return (definition[enumName] && definition[enumName][1]) || ''
  25. },
  26. getDescFromValue(value) {
  27. return numToDescMap[value] || ''
  28. }
  29. }
  30. }

使用示例

  1. const STATUS = createEnum({
  2. AUDIT_WAIT: [1, '审核中'],
  3. AUDIT_PASS: [2, '审核通过']
  4. })
  5. <p>当前状态:{STATUS.getDescFromValue(status)}</p>
  6. <p>也可用通过枚举名称获取描述:{STATUS.getDesc('AUDITING')}</p>