问题描述
我正在创建一个对象来存储一堆RGB颜色,并且允许嵌套。因此,在遍历对象时,我需要查看哪些键对应于RGB值或对象。但是,我尝试过的每个类型防护实际上都不会缩小类型。
type Color = [number,number,number] | 'transparent'
type ColorGroup = Record<string,Color>
type Colors = Record<string,Color | ColorGroup>
const colors: Colors = {
black: [0,0],white: [255,255,255],transparent: 'transparent',primary: {
'50': [211,233,252],'100': [179,213,248],'200': [127,185,251],'300': [68,156,253],'400': [0,126,254],'500': [13,100,226],'600': [17,79,189],'700': [15,62,157],'800': [10,46,122],'900': [1,22,77],}
}
const isColor = (color: Color | ColorGroup): color is Color => {
return Array.isArray(color) || typeof color === 'string'
}
const usesColor = (color: Color):void => {
// does something with the color
}
for(const color in colors) {
if(isColor(colors[color])) usesColor(colors[color]) // error: type 'Record<string,Color>' is not assignable to type 'Color'
}
有什么想法吗?我只是缺少有关类型保护的基本知识吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)