使用打字稿创建对象中键的联合对象

Use typescript to create union object of keys in objects

我有以下对象:

const myObject = {
  one: {
    fixed: {
      a: 1
    }
  },
  two: {
    fixed: {
      b: true
    }
  },
  three: {
    fixed: {
      c: 'foo'
    }
  }
}

我如何使用这个对象来创建一个等同于以下内容的类型:

type MyUnionType = {
  a: number
  b: boolean
  c: string
}

?

您可以使用

type MyObject = typeof myObject;

type MyUnionType = {
    [T in keyof MyObject as keyof MyObject[T]["fixed"]]: MyObject[T]["fixed"][keyof MyObject[T]["fixed"]]
}

从不同的顶级属性作为类型参数(例如(one),它首先提取嵌套对象的键(例如ab),然后(详细)访问与该键关联的嵌套值。