首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何限制typescript中的枚举字符串值

如何限制typescript中的枚举字符串值
EN

Stack Overflow用户
提问于 2020-11-06 13:58:03
回答 1查看 527关注 0票数 1

我有可能有行动价值的类型

代码语言:javascript
复制
type PersistentAction = 'park' | 'retry' | 'skip' | 'stop'

然后,我想用动作来定义枚举

代码语言:javascript
复制
enum persistentActions {
  PARK = 'park' ,
  RETRY = 'retry', 
  SKIP = 'skip',
  STOP = 'stop',
}

如何将枚举值限制为PersistentAction?也许枚举的类型不适合它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-06 16:27:35

枚举只能存储静态值。

你可以使用常量对象代替枚举。

请记住,它只适用于TS >=4.1

代码语言:javascript
复制
type PersistentAction = 'park' | 'retry' | 'skip' | 'stop'

type Actions = {
   readonly [P in PersistentAction as `${uppercase P}`]:P
}

const persistentActions: Actions = {
  PARK : 'park',
  RETRY : 'retry', 
  SKIP : 'skip',
  STOP : 'stop',
} as const

如果你不能使用TS 4.1,我认为下一个解决方案值得一提:

代码语言:javascript
复制
type Actions = {
  readonly [P in PersistentAction]: P
}

const persistentActions: Actions = {
  park: 'park',
  retry: 'retry',
  skip: 'skip',
  stop: 'stop',
} as const

但在上面的情况下,你应该小写你的键。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64709580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档