打字稿ENUM按值搜索

时间:2018-12-18 19:25:47

标签: javascript typescript

这是打字稿代码,我想通过按值查看在Event对象中设置枚举。

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;
}
}

我想通过按值搜索EVENT_TYPE_ENUM来在Event对象上设置eventType。例如,我现在收到的值为“ evt.1”,我想搜索EVENT_TYPE_ENUM并设置eventType,setter方法仅接受类型为EVENT_TYPE_ENUM。

const event = new Event();
event.setEventType(); //set value here by searching EVENT_TYPE_ENUM by value 
of evt.1

2 个答案:

答案 0 :(得分:0)

您可以使用Object.keys列出枚举的每个条目:

Object.keys(MyEnum).forEach(key => {
    console.log(`EVENT_TYPE_ENUM.${key} = ${MyEnum[key as keyof typeof MyEnum]}`);
})

答案 1 :(得分:0)

正如您所声明的那样,由于Typescript具有适当的数据表示形式,因此可以在next之前创建足够的数据:

EVENT_TYPE_ENUM["evt.1"] // EVENT_TYPE_ONE

您的情况应该是这样:

const event = new Event()
event.setEventType(EVENT_TYPE_ENUM["evt.1"])