问题描述
我想扁平化对象并将返回值转换为类型。
例如:
const myObject = {
names: {
title: 'red',subtitle: 'green'
},}
const returned = [...Object.values(flatten(myObject))] as const
// returns ['red','green']
type Type = typeof returned[number]
现在返回的变量是 ['red','green']
类型应该是 'red | 'green',但现在是一个字符串数组,因为返回的 typeof 是 string[]。 我想使用这种类型为我的组件输入 prop:
<Component name="red" /> //is correct,but
<Component name=`something different than "red" or "green"` /> //is incorrect.
扁平化功能:
type FlattenedObject = { [x: string]: string }
export const flattenDaisyChain = (obj: any): FlattenedObject => {
const result: FlattenedObject = {}
const transform = (wrapper: FlattenedObject | string,p?: string) => {
switch (typeof wrapper) {
case 'object':
p = p ? p + '.' : ''
for (const item in wrapper) {
transform(wrapper[item],p + item)
}
break
default:
if (p) {
result[p] = wrapper
}
break
}
}
transform(obj)
return result
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)