我有一个枚举:
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 类型?它不再是一个枚举吗?谢谢。
应该是DistanceMeasure[user.DistanceMeasure],如以下代码片段所示:
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\nRun Code Online (Sandbox Code Playgroud)\n\n造成混乱的主要原因是您没有遵循命名约定,因此最终得到的属性与您的枚举具有相同的名称。
\n