TypeScript enum to object array

前端 未结 15 2911
不思量自难忘°
不思量自难忘° 2020-12-08 03:38

I have an enum defined this way:

export enum GoalProgressMeasurements {
    Percentage = 1,
    Numeric_Target = 2,
    Completed_Tasks = 3,
    Average_Mile         


        
15条回答
  •  盖世英雄少女心
    2020-12-08 04:26

    class EnumHelpers {
    
        static getNamesAndValues(e: any) {
            return EnumHelpers.getNames(e).map(n => ({ name: n, value: e[n] as T }));
        }
    
        static getNames(e: any) {
            return EnumHelpers.getObjValues(e).filter(v => typeof v === 'string') as string[];
        }
    
        static getValues(e: any) {
            return EnumHelpers.getObjValues(e).filter(v => typeof v === 'number') as T[];
        }
    
        static getSelectList(e: any, stringConverter: (arg: U) => string) {
            const selectList = new Map();
            this.getValues(e).forEach(val => selectList.set(val as T, stringConverter(val as unknown as U)));
            return selectList;
        }
    
        static getSelectListAsArray(e: any, stringConverter: (arg: U) => string) {
            return Array.from(this.getSelectList(e, stringConverter), value => ({ value: value[0] as T, presentation: value[1] }));
        }
    
        private static getObjValues(e: any): (number | string)[] {
            return Object.keys(e).map(k => e[k]);
        }
    }
    

提交回复
热议问题