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。这不是我想要的。我目前正在使用这种方法。谢谢你的回答。