1.1.0 • Published 3 months ago

@shencom/utils-enum v1.1.0

Weekly downloads
-
License
ISC
Repository
gitlab
Last release
3 months ago

@shencom/utils-enum

枚举相关工具方法

Install

pnpm add @shencom/utils

# or

pnpm add @shencom/utils-enum

Basic Usage

import { EnumToEntries, EnumToKeyArray, EnumToObject, EnumToOptions, EnumToValueArray, IsValidEnumValue } from '@shencom/utils';
// import { EnumToObject, EnumToKeyArray, EnumToValueArray, EnumToEntries, EnumToOptions, IsValidEnumValue } from '@shencom/utils-enum';

Methods

EnumToObject

  • 说明: 将枚举对象转换为普通对象,同时创建反向映射(值到键的映射),支持字符串和数字类型枚举
  • 类型: <T extends Record<keyof T, string | number>>(enumObj: T): { [key: string]: string | number }
  • 参数:
    • enumObj - 需要转换的枚举对象
  • 示例:

    enum StringEnum {
      A = 'a',
      B = 'b',
      C = 'c',
    }
    
    enum NumberEnum {
      One = 1,
      Two = 2,
      Three = 3,
    }
    
    EnumToObject(StringEnum); 
    // { A: 'a', B: 'b', C: 'c', a: 'A', b: 'B', c: 'C' }
    
    EnumToObject(NumberEnum);
    // { One: 1, Two: 2, Three: 3, '1': 'One', '2': 'Two', '3': 'Three' }

EnumToKeyArray

  • 说明: 将枚举对象的键转换为数组
  • 类型: <T extends Record<keyof T, string | number>>(enumObj: T): string[]
  • 参数:
    • enumObj - 需要转换的枚举对象
  • 示例:

    EnumToKeyArray(StringEnum);
    // ['A', 'B', 'C']
    
    EnumToKeyArray(NumberEnum);
    // ['One', 'Two', 'Three']

EnumToValueArray

  • 说明: 将枚举对象的值转换为数组
  • 类型: <T extends Record<keyof T, string | number>>(enumObj: T): Array<string | number>
  • 参数:
    • enumObj - 需要转换的枚举对象
  • 示例:

    EnumToValueArray(StringEnum);
    // ['a', 'b', 'c']
    
    EnumToValueArray(NumberEnum);
    // [1, 2, 3]

EnumToEntries

  • 说明: 将枚举对象转换为键值对数组
  • 类型: <T extends Record<keyof T, string | number>>(enumObj: T): Array<[string, string | number]>
  • 参数:
    • enumObj - 需要转换的枚举对象
  • 示例:

    EnumToEntries(StringEnum);
    // [['A', 'a'], ['B', 'b'], ['C', 'c']]
    
    EnumToEntries(NumberEnum);
    // [['One', 1], ['Two', 2], ['Three', 3]]

EnumToOptions

  • 说明: 将枚举对象转换为适用于表单控件的选项列表
  • 类型: <T extends Record<keyof T, string | number>>(enumObj: T, labelFormatter?: (label: string, value: string | number) => string): Array<{ label: string; value: string | number }>
  • 参数:
    • enumObj - 需要转换的枚举对象
    • labelFormatter - 可选的标签格式化函数
  • 示例:

    EnumToOptions(StringEnum);
    // [
    //   { label: 'A', value: 'a' },
    //   { label: 'B', value: 'b' },
    //   { label: 'C', value: 'c' }
    // ]
    
    EnumToOptions(NumberEnum);
    // [
    //   { label: 'One', value: 1 },
    //   { label: 'Two', value: 2 },
    //   { label: 'Three', value: 3 }
    // ]
    
    EnumToOptions(StringEnum, (key, value) => `${key} (${value})`);
    // [
    //   { label: 'A (a)', value: 'a' },
    //   { label: 'B (b)', value: 'b' },
    //   { label: 'C (c)', value: 'c' }
    // ]

IsValidEnumValue

  • 说明: 检查值是否为枚举的有效值
  • 类型: <T extends Record<keyof T, string | number>>(enumObj: T, value: string | number): boolean
  • 参数:
    • enumObj - 枚举对象
    • value - 要检查的值
  • 示例:

    IsValidEnumValue(StringEnum, 'a'); // true
    IsValidEnumValue(StringEnum, 'd'); // false
    
    IsValidEnumValue(NumberEnum, 1); // true
    IsValidEnumValue(NumberEnum, 4); // false
1.1.0

3 months ago

1.0.0

3 months ago