java - typescript 枚举的构造函数?

标签 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"),
    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 中的某些东西与此匹配,以允许以有意义的方式显示状态以执行逻辑并在前端向用户显示值。 这可能吗?有没有更好的方法来处理这个问题?我们希望避免使用诸如 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];
    }

}

关于java - typescript 枚举的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47713743/

相关文章:

angular - ag-Grid:如何从单元测试访问 gridApi?

java - JSON 与 pretty-print

java - 无法获取 org.gradle.api.Project 类型的根项目 'artifactory_contextUrl' 的未知属性 '[redacted]'

angular - 在angular 2自定义子组件中动态添加和删除formGroup

angular - 如何在 ng select 中搜索值?

typescript - 如何正确实现策略设计模式

java - 如何使用 db4o 保存和加载列表

java - 如何在 Android 上查找具有特定扩展名的所有文件?

html - 在 Bootstrap css 网格中展开列移动其他列

angular - NGX无限滚动不起作用