gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 02:47:56 29 4
gpt4 key购买 nike

我有可能具有行动值(value)的类型

type PersistentAction = 'park' | 'retry' | 'skip' | 'stop'

然后我想用 Action 定义枚举

enum persistentActions {
PARK = 'park' ,
RETRY = 'retry',
SKIP = 'skip',
STOP = 'stop',
}

如何将枚举值限制为 PersistentAction?也许枚举是错误的类型?

最佳答案

枚举只能存储静态值。

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

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

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,我认为下一个解决方案值得一提:

type Actions = {
readonly [P in PersistentAction]: P
}

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

但是在上面的例子中,你应该小写你的键。

关于typescript - 如何限制 typescript 中的枚举字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64709580/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com