Givet en befintlig nyckel, hur får man nästa eller föregående nyckel i en ordnad TypeScript-strängenum?


Att ha en nyckel STEPS.GENDER och följande strängenum

export enum STEPS {
  NAME = "name",
  GENDER = "gender",
  BIRTHDAY = "birthday",
  SUCCESS = "success"
}

Hur kan jag dynamiskt få nästa eller föregående nyckel i enum, i detta fall STEPS.BIRTHDAY och STEPS.NAME?

PS: Eller i allmänhet någon annan nyckel i förhållande till den aktuella nyckeln där jag kan definiera förhållandet. Om ingen befintlig nyckel hittas kan undefined returneras.

Svar #1

Ta en titt på hur strängenum översätts till JS:

var STEPS;
(function (STEPS) {
    STEPS["NAME"] = "name";
    STEPS["GENDER"] = "gender";
    STEPS["BIRTHDAY"] = "birthday";
    STEPS["SUCCESS"] = "success";
})(STEPS || (STEPS = {}));

Med vetskapen att:

 enum STEPS {
  NAME = "name",
  GENDER = "gender",
  BIRTHDAY = "birthday",
  SUCCESS = "success"
}

const vals = Object.values(STEPS);

const indexOfSearchedItem = vals.indexOf(STEPS.GENDER);
const next: STEPS = vals[indexOfSearchedItem + 1]
console.log(next);