首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从对象类型属性创建别名类型

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

Stack Overflow用户
提问于 2017-02-15 01:30:03
回答 2查看 232关注 0票数 1

我在使用Flow时遇到了以下问题

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

代码语言:javascript
复制
type A = {
  B: {
    C: string
  }
}

我想创建另一个类型别名B p.e.,它具有AB属性的签名。

我尝试使用type B = A.B;,但它的流程抛出了以下错误:

代码语言:javascript
复制
[flow] [flow] B (Property cannot be accessed on type `A`)

我找到了一个解决方案,但它有点棘手,一点也不优雅:

代码语言:javascript
复制
type A = {
  B: {
    C: string
  }
}

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

type B = typeof fakeA.B;

还有其他解决方案吗?

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2018-01-17 03:08:46

可以使用$PropertyType帮助器

代码语言:javascript
复制
type A = {
  B: {
    C: string
  }
}

type B = $PropertyType<A, 'B'>

有关完整文档,请参阅https://flow.org/en/docs/types/utilities/#toc-propertytype

票数 1
EN

Stack Overflow用户

发布于 2017-02-23 00:27:22

你就不能这么做吗?

代码语言:javascript
复制
type B = {
  C: string
}
type A = {
  B: B
}

这并不完全是您所要求的,但它确实允许您避免重复。我不相信有一种方法可以完全做到你所要求的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42232564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档