/** * classe d'itérateurs pour les enums * cf. https://stackoverflow.com/questions/21293063/how-to-programmatically-enumerate-an-enum-type-in-typescript-0-9-5#21294925 utilisation : for (const v of EnumEx.getValues(MonTypeEnum)) { console.log(v); } for (const n of EnumEx.getNames(MonTypeEnum)) { console.log(n); } for (const c of EnumEx.getNamesAndValues(MonTypeEnum)) { console.log(c.name); console.log(c.value); } */ export class EnumEx { /** * retourne les noms et les valeurs d'un enum */ static getNamesAndValues<T extends number>(e: any) { return EnumEx.getNames(e).map(n => ({ name: n, value: e[n] as T })); } /** * retourne les noms d'un enum */ static getNames(e: any) { return EnumEx.getObjValues(e).filter(v => typeof v === "string") as string[]; } /** * retourne les valeurs d'un enum */ static getValues<T extends number>(e: any) { return EnumEx.getObjValues(e).filter(v => typeof v === "number") as T[]; } private static getObjValues(e: any): (number | string)[] { return Object.keys(e).map(k => e[k]); } }