我有一个通用的 React 组件,像这样说:
class Foo<T> extends React.Component<FooProps<T>, FooState> {
constructor(props: FooProps<T>) {
super(props);
render() {
return <p> The result is {SomeGenericFunction<T>()}</p>;
}
}
我还有一个 HOC,它看起来与这个相似(但没那么无意义):
export const withTd =
<T extends WithTdProps>(TableElement: React.ComponentType<T>): React.SFC<T> =>
(props: T) => <td><TableElement {...props}/></td>;
但是当我使用这样的组件时:
const FooWithTd = withTd(Foo);
没有办法传递类型参数,因为你既不能做withTd(Foo<T>)
,也不能做FooWithTd
,类型总是错误的。这样做的正确方法是什么?
编辑:问题是我希望能够在<FooWithTd<number> {...someprops}/>
以后使用类似的东西,因为我不知道T
HOC 中所需的类型。