Java 类型脚本枚举上的构造函数?
目前,我们的代码中存在这样一种情况:我们在Java层中使用枚举,该枚举使用构造函数存储id和“显示值”,如下所示:Java 类型脚本枚举上的构造函数?,java,angular,typescript,enums,ecmascript-6,Java,Angular,Typescript,Enums,Ecmascript 6,目前,我们的代码中存在这样一种情况:我们在Java层中使用枚举,该枚举使用构造函数存储id和“显示值”,如下所示: public enum Status implements EnumIdentity { Active(1, "Active"), AwaitingReview(2, "Awaiting Review"), Closed(3, "Closed"), Complete(4, "Complete"), Draft(5, "Draft"),
public enum Status implements EnumIdentity {
Active(1, "Active"),
AwaitingReview(2, "Awaiting Review"),
Closed(3, "Closed"),
Complete(4, "Complete"),
Draft(5, "Draft"),
InProcess(6, "In Process"),
InReview(7, "In Review"),
NotStarted(8, "Not Started"),
PendingResolution(9, "Pending Resolution"),
Rejected(10, "Rejected");
private int id;
private String displayValue;
PlanStatus(final int id, String displayValue) {
this.id = id;
this.displayValue = displayValue;
}
/** {@inheritDoc} */
@Override
public int id() {
return id;
}
public String getDisplayValue() {
return displayValue;
}
}
我们希望typescript中的某些内容与此相匹配,以便以有意义的方式显示状态,以执行逻辑,并在前端向用户显示值。
这可能吗?有没有更好的方法来处理这个问题?我们希望避免使用诸如dos status.id()=1或status.name()=“Active”这样的逻辑来推动枚举
谢谢,Typescript不支持java中的扩展枚举。使用类可以实现类似的效果:
interface EnumIdentity { }
class Status implements EnumIdentity {
private static AllValues: { [name: string] : Status } = {};
static readonly Active = new Status(1, "Active");
static readonly AwaitingReview = new Status(2, "Awaiting Review");
static readonly Closed = new Status(3, "Closed");
static readonly Complete = new Status(4, "Complete");
static readonly Draft = new Status(5, "Draft");
static readonly InProcess = new Status(6, "In Process");
static readonly InReview = new Status(7, "In Review");
static readonly NotStarted = new Status(8, "Not Started");
static readonly PendingResolution = new Status(9, "Pending Resolution");
static readonly Rejected = new Status(10, "Rejected");
private constructor(public readonly id: number, public readonly displayValue: string) {
Status.AllValues[displayValue] = this;
}
public static parseEnum(data: string) : Status{
return Status.AllValues[data];
}
}
试着看看希望这有帮助。谢谢那些文档都很棒@Swook这真是太遗憾了,我得出了这个结论,但我认为最好向社区发布,以防有人发现类似的解决方法。ThanksHow当状态被表示为字符串时,像这样的json字符串{“id”:1,“title”:“Test”,“status”:“waitingreview”}]会映射到类吗?我担心这将是一个手动操作。您将需要使用添加的parseEnum方法来转换为enum..我从来没有想过如何做,AllValues是如何定义的,在我身上吐出一个错误?Wops。。忘记初始化了