打字稿,枚举,对象

时间:2020-09-30 21:16:46

标签: angular typescript

我有这个枚举:

export enum Status {
  SemLogin,
  Valido,
  Invalido,
  Expirado
}

我希望每个状态都返回一个对象,像这样:

{ key: Status.Expirado.key,  icon: 'ban', color: 'danger' }

编辑:

这个想法是在DB上存储一个值(可以是索引,甚至是它的文本),然后检索带有图标,颜色和一些标题值的对象。因此,我将获得一个状态列表:

  {key: Status.SemLogin.key, icon: 'sign-out-alt', color: 'disabled'},
  {key: Status.Valido.key, icon: 'check-circle', color: 'success'},
  {key: Status.Invalido.key, icon: 'exclamation-circle', color: 'warning'},
  {key: Status.Expirado.key, icon: 'ban', color: 'danger'}

然后针对每个不同的状态,它会给我一个对象以显示不同的状态。

什么是最好的方法?

1 个答案:

答案 0 :(得分:0)

假设您想要字符串名称ValidoExpirado等,您只需将枚举字符串等于名称:

export enum Status {
  SemLogin = "SemLogin",
  Valido = "Valido",
  Invalido = "Invalido",
  Expirado = "Expirado"
}

然后仅使用Status.Expirado将是字符串Expirado


如果您不喜欢这种重复,那么数字枚举会在运行时存在反向查找,因此您可以或者执行以下操作:

enum Status {
  // THIS IS NOT STRING ENUM ANY MORE
  SemLogin,
  Valido,
  Invalido,
  Expirado
}
console.log(Status[Status.Expirado])

This logs Expirado 因此它仍然具有一定的重复性,并且没有打字稿仍然具有第一个解决方案所具有的枚举行为的良好行为。