Javascript 从对象类型属性创建别名类型

Javascript 从对象类型属性创建别名类型,javascript,flowtype,Javascript,Flowtype,我面临以下问题: 我有一个对象的类型别名,a: type A = { B: { C: string } } 我想创建另一个类型别名,Bp.e.,它具有A中B属性的签名 我尝试了类型B=A.B但它会引发以下错误: [flow] [flow] B (Property cannot be accessed on type `A`) 我找到了一个解决方案,但有点棘手,一点也不优雅: type A = { B: { C: string } } //FAKE const

我面临以下问题:

我有一个对象的类型别名,
a

type A = {
  B: {
    C: string
  }
}
我想创建另一个类型别名,
B
p.e.,它具有
A
B
属性的签名

我尝试了
类型B=A.B但它会引发以下错误:

[flow] [flow] B (Property cannot be accessed on type `A`)
我找到了一个解决方案,但有点棘手,一点也不优雅:

type A = {
  B: {
    C: string
  }
}

//FAKE constant of type A
const fakeA : A = (null : any);

type B = typeof fakeA.B;
还有其他解决办法吗

谢谢你的帮助。

你能这么做吗

type B = {
  C: string
}
type A = {
  B: B
}

这并不完全是你想要的,但它确实允许你避免重复。我不相信有什么方法可以完全满足您的要求。

您可以使用
$PropertyType
帮助程序

type A = {
  B: {
    C: string
  }
}

type B = $PropertyType<A, 'B'>
A型={
B:{
C:字符串
}
}

type B=$PropertyType用于完整文档。

请提供一些额外的上下文-这是什么语言?另外,当你说“它不工作”时,你有没有收到任何错误,或者它是如何不工作的?另外,“flow”是一个元标记,通常不被使用。你使用的语言应该有一个标签。我使用的是Javascript(ES6)和Flow。这不是我想要的。我目前正在使用这种方法。谢谢你的回答。