假设我们有一个函数keyMirror
,它接受一个具有任意值的Object,并返回另一个具有与键匹配的值的对象。例如:
输入:
{
KEY_ONE: '',
KEY_TWO: '',
}
输出:
{
KEY_ONE: 'KEY_ONE',
KEY_TWO: 'KEY_TWO',
}
使用$ObjMapi
,输入此内容将非常简单:
type keyMirror<O: {}> = (obj: O) => $ObjMapi<O, <K>(k: K) => K>;
我的问题是:我们如何键入递归keyMirror
函数?例如,给定输入:
{
GROUP_ONE: {
KEY_ONE: '',
},
GROUP_TWO: {
KEY_TWO: '',
},
}
并输出:
{
GROUP_ONE: {
KEY_ONE: 'GROUP_ONE.KEY_ONE',
},
GROUP_TWO: {
KEY_TWO: 'GROUP_TWO.KEY_TWO',
},
}