Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get index of enum value typescript

I have the following string enum:

export enum RecordStatus {
   ONGOING_ADMINISTRATIVE_ANALYSIS = 'ONGOING_ADMINISTRATIVE_ANALYSIS',

   ONGOING_TECHNICAL_ANALYSIS = 'ONGOING_TECHNICAL_ANALYSIS',

   COMPLETED_APPLICATION = 'COMPLETED_APPLICATION'
}

I have the following function:

setTimelineStatus(status: RecordStatus) : void {
    console.log("State :" + status); // ON_GOING_TECHNICAL_ANALYSIS

    console.log(RecordStatus.valueOf(status).ordinal()); // doesn't work. Should print 1

    console.log(RecordStatus.valueOf("ON_GOING_TECHNICAL_ANALYSIS").ordinal()); // doesn't work either. Should print 1
}

This function retrieves a set enum as parameter, for example RecordStatus.ON_GOING_TECHNICAL_ANALYSIS. I want to get the index (it should be 1 in above case). I tried the solution in this thread Get index of enum from string? but I've got this error:

Error

I don't understand why I have this error. I only want the index of the enum value.

like image 266
Héloïse Chauvel Avatar asked Jul 23 '20 00:07

Héloïse Chauvel


People also ask

How do you find the index of an enum?

Use the Object. values() method to get an array containing the enum's values. Use square brackets to access the array at the specific index and get the value.


1 Answers

The post you are refering to is for enums in Java.

In typescript, enum are considered objects at runtime so you can just iterate over the keys of the enum until you find the one you're looking for.

Object.keys(RecordStatus).indexOf('ON_GOING_TECHNICAL_ANALYSIS');
like image 59
saulmaldonado Avatar answered Sep 21 '22 10:09

saulmaldonado