提取 Typescript 对象中 ENUM 的字符串值

Bre*_* JB 5 enums typescript

我有一个枚举:

export enum DistanceMeasure {
Miles, Kilometers
Run Code Online (Sandbox Code Playgroud)

}

在用户对象中使用:

export class User {
... some stuff
MaxTravelDistance:  number;
DistanceMeasure:    DistanceMeasure;
MaxTravelTime:      TimeSpan;
... some more stuff
Run Code Online (Sandbox Code Playgroud)

}

因此,距离测量的信息来自服务器,为 0(零)或 1,这很好。但我需要提供字符串,例如“Miles”。

在我的(Angular/Ionic)应用程序中,输出

      console.log(user.DistanceMeasure);
Run Code Online (Sandbox Code Playgroud)

是“0”(零)。但是我读到要提取枚举字符串,您应该将其用作索引。如果我做:

      console.log(user.DistanceMeasure[0]);
Run Code Online (Sandbox Code Playgroud)

它返回为未定义。

这是为什么?因为 user.DistanceMeasure 是 DistanceMeasure 类型?它不再是一个枚举吗?谢谢。

Rob*_*sen 2

应该是DistanceMeasure[user.DistanceMeasure],如以下代码片段所示:

\n\n
enum DistanceMeasure {\n    Miles, Kilometers\n}\n\nclass User {\n    DistanceMeasure:\xe3\x80\x80DistanceMeasure;\n}\n\nconst user = new User();\nuser.DistanceMeasure = 0;\n\nconsole.log(DistanceMeasure[user.DistanceMeasure]); // Miles\n
Run Code Online (Sandbox Code Playgroud)\n\n

造成混乱的主要原因是您没有遵循命名约定,因此最终得到的属性与您的枚举具有相同的名称。

\n