我想将一个 Component 传递给一个包装器组件,包括要在包装器组件内呈现的props。Typescript 应该验证传递的 props 是否属于传递的组件并进行类型检查。
这是传递给组件的props:
act?:componentAct<T>
这部分有效:
interface componentAct<T> {
component: React.ComponentType<T>,
props:T
}
interface WrapperProps<T> {
act?: componentAct<T>
}
interface ActorProps {
name: string
}
const Wrapper: React.SFC<WrapperProps<ActorProps>> = props => {
const componentAct = props.act
const Comp = componentAct!.component
return <Comp {...componentAct!.props}>{props.children}</Comp>
}
const Actor = (props: ActorProps) => {
return <div {...props}>test123</div>
}
const appNode = document.getElementById('app')
ReactDOM.render((<Wrapper act={{component: Actor, props:{name:'test'}}} />), appNode);
然而
React.SFC < WrapperProps< ?>>
我不想在这里传递 ActorProps(而不是问号),因为包装器props不知道 Actor 正在使用哪个props,因为 Wrapper 位于该 Actor 的另一个库中。
这里的另一个问题是组件可能没有 props(然后应该从 componentAct 中省略 props)