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

如何限制typescript中的枚举字符串值,typescript,enums,Typescript,Enums,我有可能有行动价值的类型 type PersistentAction = 'park' | 'retry' | 'skip' | 'stop' 然后我想用动作定义枚举 enum persistentActions { PARK = 'park' , RETRY = 'retry', SKIP = 'skip', STOP = 'stop', } 如何将枚举值限制为持久化? 可能枚举的类型不对?枚举只能存储静态值 可以使用常量对象而不是枚举 请记住,它仅在TS>=4.1时有效

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

type PersistentAction = 'park' | 'retry' | 'skip' | 'stop'
然后我想用动作定义枚举

enum persistentActions {
  PARK = 'park' ,
  RETRY = 'retry', 
  SKIP = 'skip',
  STOP = 'stop',
}
如何将枚举值限制为
持久化

可能枚举的类型不对?

枚举只能存储静态值

可以使用常量对象而不是枚举

请记住,它仅在TS>=4.1时有效

键入PersistentAction='park'|'retry'|'skip'|'stop'
类型操作={
只读[P在PersistentAction中为`${uppercase P}`]:P
}
常量持久化:操作={
公园:"公园",,
重试:“重试”,
跳过:“跳过”,
停:"停",,
}常量
如果您不能使用TS 4.1,我认为下一个解决方案值得一提:

类型操作={
只读[P在PersistentAction中]:P
}
常量持久化:操作={
公园:"公园",,
重试:“重试”,
跳过:“跳过”,
停:"停",,
}常量

但在上述情况下,您应该将键小写。

枚举只能存储静态值

可以使用常量对象而不是枚举

请记住,它仅在TS>=4.1时有效

键入PersistentAction='park'|'retry'|'skip'|'stop'
类型操作={
只读[P在PersistentAction中为`${uppercase P}`]:P
}
常量持久化:操作={
公园:"公园",,
重试:“重试”,
跳过:“跳过”,
停:"停",,
}常量
如果您不能使用TS 4.1,我认为下一个解决方案值得一提:

类型操作={
只读[P在PersistentAction中]:P
}
常量持久化:操作={
公园:"公园",,
重试:“重试”,
跳过:“跳过”,
停:"停",,
}常量

但在上述情况下,您应该将密钥小写。

我们是否可以重用
PersistentAction
类型,以避免在
persistentActions
中重复文字字符串?@matchish抱歉,我不明白。PersistentAction已经在
Actions
typeI中重用了。我的意思是我们复制了文本字符串。在第一种情况下,这些字符串在类型范围内,在第二种情况下,它们是值。您不能将类型用作值。我们是否可以重用
persistentation
类型以避免在
persistentations
中复制文字字符串?@matchish抱歉,不理解。PersistentAction已经在
Actions
typeI中重用了。我的意思是我们复制了文本字符串。在第一种情况下,这些字符串在类型范围内,在第二种情况下,它们是值。不能使用类型作为值