Typescript 在typescirpt中,如何将enum的值分配给type?

Typescript 在typescirpt中,如何将enum的值分配给type?,typescript,Typescript,我已经分配了一个枚举,比如ColorKind。现在我想得到一个类型,它可以使用enum的值,也可以使用literal值 当然,我可以显式地声明ColorType。它有效,但不好 enum ColorKind { Red = 'red', Blue = 'blue', } type ColorType = 'red' | 'blue' type Color = ColorKind | ColorType let color: Color = ColorKind.Blue colo

我已经分配了一个枚举,比如
ColorKind
。现在我想得到一个类型,它可以使用enum的值,也可以使用literal值

当然,我可以显式地声明
ColorType
。它有效,但不好

enum ColorKind {
    Red = 'red',
    Blue = 'blue',
}
type ColorType = 'red' | 'blue'
type Color = ColorKind | ColorType

let color: Color = ColorKind.Blue
color = 'red'

我试着用
Record
来标记它是否有效,但它不起作用

type ColorType = keyof Record<ColorKind, string>

let color: Color = ColorKind.Blue
    color = 'red'
//  ^^^^^ error!
type ColorType=keyof记录
让颜色:color=ColorKind.Blue
颜色=‘红色’
//^^^^^错误!

拥有枚举的意义在于使用该枚举从中赋值。如果您计划在不经过枚举的情况下将
red
blue
分配给对象,请按照丹尼斯的建议使用联合类型。

我建议您避免使用
enum
s,而只使用文字联合类型:
type Color='red'|'blue'
。看到了吗?