1.1.0 • Published 3 months ago
@shencom/utils-enum v1.1.0
@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