多级索引类型打字稿

时间:2019-12-17 00:56:50

标签: typescript

您好,我想知道是否有人可以帮助我。

我有一个函数,该函数使用点分隔符将对象的每个级别作为字符串

例如

const fooType = {
  test: {
    test1: {
      test2: 'test'
    }
  },
  testing: {
    testable: 'be'
  },
  bottom: 'b'
}; 

所以如果我想获取test2的值,我会将该函数编写为

foo('test.test1.test2')

如果我采用以下type fooTypeProps = keyof typeof fooType;

它给了我test | testing | bottom

的并集

我想知道打字稿中是否有一种方法可以获取该密钥,但对于所有外行而言,因此在这种情况下,我将获得test.test1.test2 | testing.testable | bottom的并集

1 个答案:

答案 0 :(得分:0)

question this duplicates中,您可以输入自己的类型,并获得表示路径树叶子的元组联合:

type AllLeaves = Leaves<typeof fooType>
/* type AllLeaves = ["test", "test1", "test2"] | ["testing", "testable"] | ["bottom"] */

Playground link

但是您不能在类型系统中将它们转换为点分字符串,而类型系统没有字符串文字操作的概念。