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

问题描述:

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

type A = { 
    someproperty: string 
} 

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

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

type A = { 
    someproperty: string 
} 

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

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

如果您能够控制所有类型,那么最好以可以按名称引用属性类型的方式进行设计。在很多情况下,一个简单的别名将起作用:

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

const b: SomePropertyOfA = "hello"