enum.ts 1.17 KiB
/**
 * 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]);