1

This is the typescript code, I want to set enum in the Event object by looking it through value.

I have this enum -
export enum EVENT_TYPE_ENUM {
    EVENT_TYPE_ONE = "evt.1",
    EVENT_TYPE_TWO = "evt.2",
}

I have this object -
export class Event{
    private eventType: EVENT_TYPE_ENUM;

public getEventType(): EVENT_TYPE_ENUM {
    return this.eventType;
}

public setEventType(eventType: EVENT_TYPE_ENUM): void {
    this.eventType = eventType;
}
}

I want to set eventType on my Event object by searching EVENT_TYPE_ENUM by value. for example, I have received value as "evt.1" now I want search the EVENT_TYPE_ENUM and set eventType, the setter method only accepts type as EVENT_TYPE_ENUM.

const event = new Event();
event.setEventType(); //set value here by searching EVENT_TYPE_ENUM by value 
of evt.1
Nick M
  • 11
  • 3
  • Possible duplicate of [Parse string as Typescript Enum](https://stackoverflow.com/q/52370544/2887218) – jcalz Dec 18 '18 at 19:40
  • I'm having a hard time understanding this question, because it doesn't seem to be a [mcve]. You want to do `event.setEventType("evt.1")`? Or `event.setEventType(asEnum(EVENT_TYPE_ENUM,"evt.1"))`? – jcalz Dec 18 '18 at 19:42

2 Answers2

0

You can list every entry of enums with Object.keys:

Object.keys(MyEnum).forEach(key => {
    console.log(`EVENT_TYPE_ENUM.${key} = ${MyEnum[key as keyof typeof MyEnum]}`);
})
Nino Filiu
  • 16,660
  • 11
  • 54
  • 84
0

As Typescript has appropriate data representation, as you declared, it's enough to create by next:

EVENT_TYPE_ENUM["evt.1"] // EVENT_TYPE_ONE

In your case it should be like:

const event = new Event()
event.setEventType(EVENT_TYPE_ENUM["evt.1"])
dimpiax
  • 12,093
  • 5
  • 62
  • 45