如何递归键入镜像函数

时间:2018-01-10 01:11:33

标签: flowtype

假设我们有一个函数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',
  },
}

0 个答案:

没有答案