【问题标题】:Typescript - restrict string values to enum values打字稿 - 将字符串值限制为枚举值
【发布时间】:2021-04-06 08:00:39
【问题描述】:

我希望 role 具有以下值之一:ADMIN / USER / GUEST

我尝试使用enum 来实现它,但是在以下最小示例中出现错误:

enum EnumRole {
  ADMIN = 'ADMIN',
  USER = 'USER',
  GUEST = 'GUEST',
}

/* ------------------------------------------------- */

const role: EnumRole.ADMIN = 'ADMIN';

类型“ADMIN”不可分配给类型“EnumRole.ADMIN”。

Check playground example

有什么想法吗?

【问题讨论】:

  • 不应该是const role: EnumRole = EnumRole.ADMIN;吗?
  • 在我的项目中,我无法更改 role = 'ADMIN' 部分。我只能更改枚举模型和/或类型分配。怎么可能做到?
  • 如果要从字符串中赋值:const role: EnumRole = EnumRole['ADMIN']
  • 这个帖子可能是你要找的:github.com/Microsoft/TypeScript/issues/17690

标签: typescript enums


【解决方案1】:

您需要将角色类型设置为强类型, 你可以这样做,

const role:'ADMIN' | 'USER' | 'GUEST' = 'ADMIN'

现在类型将被限制在 ADMIN/USER/GUEST 中。在这种情况下,您不需要enum

【讨论】:

  • 虽然不需要枚举,而且出于好奇,我能否以某种方式将字符串限制为枚举值?
  • 据我所知,枚举不能用于设置强类型。
猜你喜欢
  • 2018-11-09
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-30
  • 1970-01-01
  • 2018-10-23
相关资源
最近更新 更多