有没有办法在对象的接口中使用字符串文字类型?
Is there a way to use the string literal type in an interface of object?
我有一个类型Color
,
type Color = 'yellow' | 'red' | 'orange'
我有一个对象,它的接口是ColorSetting
。
interface ColorSetting {
id: string
yellow?: boolean
red?: boolean
orange?: boolean
}
我想使用类型 Color
来简化界面 ColorSetting
。
我简化后的代码如下:
interface ColorSetting {
id: string
[k in Color]?: boolean
}
但是我收到关于 A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type.
的错误
如何在接口中正确使用字符串字面量类型?
在那里使用字符串文字很重要吗?具有字符串值的枚举是否足够:
enum Colors {
YELLOW = 'yellow',
RED = 'red',
ORANGE = 'orange',
}
interface ColorSetting {
id: string;
color: Colors;
}
这种方法的唯一缺点是如果你需要反向映射它,打字稿不会自己做。
我自己一般不使用这样的文字,所以我不确定这是否有效,但试一试:
interface ColorSetting {
id: string;
color: Color;
}
基本上只需使用您声明的类型,删除“[k in Color]”位
我找到了一个解决方案,对我很有用。此解决方案使用 Intersection Types.
ColorSetting = {
id: string
} & {
[k in Color]?: boolean
}
我有一个类型Color
,
type Color = 'yellow' | 'red' | 'orange'
我有一个对象,它的接口是ColorSetting
。
interface ColorSetting {
id: string
yellow?: boolean
red?: boolean
orange?: boolean
}
我想使用类型 Color
来简化界面 ColorSetting
。
我简化后的代码如下:
interface ColorSetting {
id: string
[k in Color]?: boolean
}
但是我收到关于 A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type.
如何在接口中正确使用字符串字面量类型?
在那里使用字符串文字很重要吗?具有字符串值的枚举是否足够:
enum Colors {
YELLOW = 'yellow',
RED = 'red',
ORANGE = 'orange',
}
interface ColorSetting {
id: string;
color: Colors;
}
这种方法的唯一缺点是如果你需要反向映射它,打字稿不会自己做。
我自己一般不使用这样的文字,所以我不确定这是否有效,但试一试:
interface ColorSetting {
id: string;
color: Color;
}
基本上只需使用您声明的类型,删除“[k in Color]”位
我找到了一个解决方案,对我很有用。此解决方案使用 Intersection Types.
ColorSetting = {
id: string
} & {
[k in Color]?: boolean
}