获取枚举值打字稿的索引

Hél*_*vel 5 typescript angular

我有以下字符串枚举:

export enum RecordStatus {
   ONGOING_ADMINISTRATIVE_ANALYSIS = 'ONGOING_ADMINISTRATIVE_ANALYSIS',

   ONGOING_TECHNICAL_ANALYSIS = 'ONGOING_TECHNICAL_ANALYSIS',

   COMPLETED_APPLICATION = 'COMPLETED_APPLICATION'
}
Run Code Online (Sandbox Code Playgroud)

我有以下功能:

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
}
Run Code Online (Sandbox Code Playgroud)

此函数检索集合枚举作为参数,例如RecordStatus.ON_GOING_TECHNICAL_ANALYSIS。我想获取索引(在上述情况下应该是 1)。我在这个线程中尝试了解决方案Get index of enum from string? 但我有这个错误:

错误

我不明白为什么我有这个错误。我只想要枚举值的索引。

小智 6

您所指的帖子适用于 Java 中的枚举。

在打字稿中,枚举在运行时被视为对象,因此您可以遍历枚举的键,直到找到您要查找的键。

Object.keys(RecordStatus).indexOf('ON_GOING_TECHNICAL_ANALYSIS');
Run Code Online (Sandbox Code Playgroud)

  • @HéloïseChauvel 你得到 `-1` 的原因是因为它拼写错误。根据上面所述的枚举,它应该是“ONGOING_TECHNICAL_ANALYSIS”(注意“ON”之后删除的“_”)。 (2认同)