Javascript 如何从另一个组件复制属性的流类型?

Javascript 如何从另一个组件复制属性的流类型?,javascript,reactjs,flowtype,Javascript,Reactjs,Flowtype,我正在创建一个组件,它封装了另一个名为按钮的组件按钮在库中定义,该库不导出按钮属性的类型 要正确键入我的组件,最好复制按钮的属性类型,向该类型添加一些属性(使用typeof,$Diff或类似的属性),并将其用作我的组件类型样式按钮 比如: type AddedPropsT = { isStyled: boolean, } function StyledButton(props: $GenericParam(typeof Button) & AddedPropsType) { r

我正在创建一个组件,它封装了另一个名为
按钮
的组件<代码>按钮
在库中定义,该库不导出按钮属性的类型

要正确键入我的组件,最好复制
按钮的属性类型,向该类型添加一些属性(使用
typeof
$Diff
或类似的属性),并将其用作我的组件类型
样式按钮

比如:

type AddedPropsT = {
  isStyled: boolean,
}

function StyledButton(props: $GenericParam(typeof Button) & AddedPropsType) {
  return (<Button ...props className={isStyled ? "StyleClass" : ""} />)
}
类型AddedPropsT={
isStyled:布尔,
}
函数StyledButton(道具:$GenericParam(按钮类型)和AddedPropsType){
返回()
}
当然,流中不存在类型util
$GenericParam
按钮
的类型是(问题是如何从那里获得
道具
类型),在幕后它是纯函数无状态组件

您可以使用实用程序类型获取按钮的道具类型:

type AddedProps = {
  isStyled: boolean,
}

function StyledButton(props: React.ElementConfig<typeof Button> & AddedProps) {
  return (<Button {...props} className={props.isStyled ? "StyleClass" : ""} />)
}
类型AddedProps={
isStyled:布尔,
}
函数样式按钮(道具:React.ElementConfig和addedrops){
返回()
}

我认为没有任何方法可以提取泛型参数。看起来会非常有用。创建这个:@雅各布谢谢雅各布,我不确定,我是新来的。对,这将是非常有用的,所以感谢您创建的问题。希望它能很快被注意到。