我遇到Flow的以下问题:
我有一个对象的类型别名A
:
type A = {
B: {
C: string
}
}
我想创建另一个类型别名B
p.e.,它在B
中具有A
属性的签名。
我尝试使用type 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;
还有其他解决方案吗?
感谢您的帮助。
答案 0 :(得分:1)
您可以使用$PropertyType
帮助
type A = {
B: {
C: string
}
}
type B = $PropertyType<A, 'B'>
有关完整文档,请参阅https://flow.org/en/docs/types/utilities/#toc-propertytype。
答案 1 :(得分:0)
你能这样做吗?
type B = {
C: string
}
type A = {
B: B
}
它并不完全符合您的要求,但确实可以避免重复。我不相信有办法完全按照你的要求去做。