在TypeScript中使用枚举类型时,以下辅助函数可能会有用,请看一看!辅助函数将使用以下枚举作为示例进行测试:enumDayOfWeek{Monday=1,Tuesday=2,Wednesday=3,Thursday=4,Friday=5,Saturday=6,Sunday=7,}typeEnum={[s:数字]:字符串};检查枚举是否包含key该方法可以用来检查一个枚举是否包含某个key,代码如下:functionisEnumKey(enumSrc:T,key:unknown):keyiskeyofT{returnNumber.isInteger(enumSrc[keyaskeyofT]);}测试:console.log(isEnumKey(DayOfWeek,DayOfWeek[DayOfWeek.Friday]));//trueconsole.log(isEnumKey(DayOfWeek,DayOfWeek[DayOfWeek.Monday]));//trueconsole.log(isEnumKey(DayOfWeek,"hello"));//false二、检查一个枚举是否包含某个值该方法可以用来检查一个枚举是否包含某个枚举值,代码如下:functionisEnumValue(enumSrc:T,value:unknown):valueisT[keyofT]{returnNumber.isInteger(enumSrc[enumSrc[valueaskeyofT]asanyaskeyofT]);}测试:console.log(isEnumValue(DayOfWeek,DayOfWeek.Friday));//trueconsole.log(isEnumValue(DayOfWeek,DayOfWeek.Monday));//真实的le.log(isEnumValue(DayOfWeek,996));//false3Convertenumerationtokeylist该方法可用于将枚举转换为keylist,即将所有枚举key存储在一个数组中,代码如下:functionenumToKeys(enumSrc:T):(keyofT)[]{returnObject.keys(enumSrc).filter((key:keyofT|any)=>isEnumKey(enumSrc,key))as(keyofT)[];}测试:console.log(enumToKeys(DayOfWeek));输出:['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']4.将枚举转换为值列表。这个方法可以用来把枚举中的所有枚举值都提取出来,放到一个数组中。代码如下:functionenumToValues(enumSrc:T):T[keyofT][]{returnenumToKeys(enumSrc).map((key:keyofT)=>enumSrc[key]);}测试:console.log(enumToValues(DayOfWeek));Output:[1,2,3,4,5,6,7]5将枚举值转换为对应的key该方法可以通过枚举值获取枚举中对应的key,代码如下:functionenumValueToKey(enumSrc:T,value:T[keyofT]):keyofT|undefined{return(enumSrcasany)[value];}测试:console.log(enumValueToKey(DayOfWeek,DayOfWeek.Friday));//Fridayconsole.log(enumValueToKey(DayOfWeek,DayOfWeek.周一));//Mondayconsole.log(enumValueToKey(DayOfWeek,996));//undefined6.将枚举转换为键值对数组该方法可用于将枚举转换为键值对数组。代码如下:functionenumToEntries(enumSrc:T):[keyofT,T[keyofT]][]{returnenumToValues(enumSrc).map((value:T[keyofT])=>[enumValueToKey(enumSrc,value)askeyofT,value]);}测试:console.log(enumToEntries(DayOfWeek));输出:[['Monday',1],['Tuesday',2],['Wednesday',3],['Thursday',4],['Friday',5],['Saturday',6],['Sunday',7]]七将枚举转换为对象数组该方法可用于将枚举转换为Object数组,key值可自定义,代码如下:functionfromEnum(enumSrc:T,projection:(item:[keyofT,T[keyofT]],index:number,array:[keyofT,T[keyofT]][])=>C,跳过?:(value:[keyofT,T[keyofT]],index:number,array:[keyofT,T[keyofT]][])=>boolean){letentries=enumToEntries(enumSrc);如果(跳过)条目=条目.过滤器(跳过);返回条目.地图(投影);}测试:接口选项{标签:键的;值:T[keyofT];}常量选项:选项[]=fromEnum(DayOfWeek,([label,value]:[keyoftypeofDayOfWeek,DayOfWeek])=>({label,value,}));console.log(options);输出结果:[{label:'Monday',value:1},{label:'Tuesday',value:2},{label:'Wednesday',value:3},{label:'星期四',价值:4},{标签:'星期五',价值:5},{标签:'星期六',价值:6},{标签:'星期日',价值:7}]