我有一个枚举:

export enum DistanceMeasure {
Miles, Kilometers

}
在用户对象中使用:
export class User {
... some stuff
MaxTravelDistance:  number;
DistanceMeasure:    DistanceMeasure;
MaxTravelTime:      TimeSpan;
... some more stuff

}
所以服务器上的信息是0(零)或1,表示距离测量,这很好。
但我需要展示一下绳子,例如“英里”。
在My(Angular/Ionic)应用程序中,输出
      console.log(user.DistanceMeasure);

是“0”(零)。
不过,我读到要提取枚举字符串,应该将其用作索引。
如果我这样做了:
      console.log(user.DistanceMeasure[0]);

它会以未定义的形式返回。
为什么?因为user.distancemeasure是distancemeasure类型?
它不再是枚举吗?
谢谢。

最佳答案

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

enum DistanceMeasure {
    Miles, Kilometers
}

class User {
    DistanceMeasure: DistanceMeasure;
}

const user = new User();
user.DistanceMeasure = 0;

console.log(DistanceMeasure[user.DistanceMeasure]); // Miles

造成这种混乱的一个重要原因是,您没有遵循命名约定,因此最终会得到与枚举同名的属性。

09-16 15:31