如何在流程中使用对象属性的类型?

时间:2017-07-05 11:25:16

标签: javascript flowtype

如何在流中使用对象属性的类型? e.g。

type A = {
  someproperty: string
}

// throws error
const b: A.someproperty = "hello"

2 个答案:

答案 0 :(得分:1)

您可以使用$PropertyType<T,x> utility type

type A = {
  someproperty: string
}

// this works fine
const b: $PropertyType<A, 'someproperty'> = "hello"

答案 1 :(得分:1)

正如您在自我回答中所说,您可以使用$PropertyType。但请记住,这不是官方的,将来可能并不总是一样。它甚至可以完全删除。 React在幕后使用$PropertyType,但Facebook的开发人员可以与Flow团队一起工作,并且可以更好地了解功能路线图。

如果您可以控制所有类型,最好以这样的方式设计它们,以便您可以按名称引用属性的类型。在很多情况下,一个简单的类型别名将起作用:

type SomePropertyOfA = string;
type A = {
  someproperty: SomePropertyOfA
}

const b: SomePropertyOfA = "hello"