要在我的主题中使用我的颜色枚举,我必须声明它的类型。
我试过这个:
enum COLORS {
PRIMARY = '#FF7900',
}
type ColorsType = {
[key in keyof typeof COLORS]: COLORS[key] // error
}
interface ThemeColors extends ColorsType {}
但我收到此错误: TS2536: Type 'key' cannot be used to index type 'COLORS'
如果我使用string
而不是,它可以工作COLORS[key]
,但我不希望该类型允许任何COLORS
属性的任何字符串。
值类型实际上应该是(typeof COLORS)[key]
.
enum COLORS {
PRIMARY = '#FF7900',
SECONDARY = '#FFFFFF',
}
type ColorsType = {
[key in keyof typeof COLORS]?: typeof COLORS[key];
// if not optional, all COLORS enum keys are required!
}
// These might be what you want
var colors: ColorsType = { PRIMARY: COLORS.PRIMARY }; // OK
var wrongColors: ColorsType = { PRIMARY: COLORS.SECONDARY }; // error!
编辑:解决方案可以进一步简化为:
type ColorsType = Partial<typeof COLORS>;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句