【问题标题】:what is the best way to seperate dynamic and static enums in Angular?在Angular中分离动态和静态枚举的最佳方法是什么?
【发布时间】:2022-01-22 14:40:31
【问题描述】:

我有两种枚举类型。一些来自服务器,另一些在代码中静态定义。

我的问题是确定 枚举 是静态还是动态的最佳方法是什么?

1-搜索静态枚举列表。

2-使用面向对象的方法。

【问题讨论】:

  • 你是如何生成动态枚举的?
  • 只需向服务器发送一个get请求
  • get 请求将为您提供数据,之后您如何在 typescript 中生成枚举?
  • 我实际上不需要生成枚举。我只是将返回数据用作 ngselect 的项目

标签: javascript angular typescript


【解决方案1】:

使用打字稿或“静态枚举”构建的枚举是普通对象,因此为了将它们与“动态枚举”(普通对象)区分开来,您可以为动态枚举创建一个类并创建它的实例并将api数据分配给它新创建的实例,以便稍后在运行时检查它是静态枚举还是动态枚举,如下所示:

class DynamicEnum {}

enum Status {
    Ok,
    Error
}

const apiData = JSON.parse(`{ "Ok": 0, "Error": 1 }`);
const enumBuiltUsingApiData = Object.assign(new DynamicEnum(), apiData);


const isEnumStaticOrDynamic = (e: any) => {
    console.log(e instanceof DynamicEnum ? "dynamic enum" : "static enum");
}

isEnumStaticOrDynamic(Status); // output: "static enum"
isEnumStaticOrDynamic(enumBuiltUsingApiData); // output: "dynamic enum"

【讨论】:

  • 非常感谢。这是个好主意。我用过类似的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-14
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多