在TS之前的世界中,我们曾经像这样将简单的HOC分配给const。 (代码使用recompose/mapProps)
const withAverage = mapProps(
(props) => ({ ...props, average: avg(props.numbers) })
)
在TS世界中,代码看起来像这样(虽然不是100%准确,但是可以说明问题)
const withAverage = <R extends DataRow, P extends WithData<R>>(
component: React.ComponentType<P>
): React.ComponentType<P & WithAverage<R>> =>
mapProps<P, P & WithAverage<R>>(
(props) => ({ ...props, average: avg(props.numbers) })
(component);
TypeScript版本将HOC函数包装在另一个HOC函数中,但这不是必需的,mapProps
已经提供了HOC,所以只是
const withAverage = mapProps...
就足够了,不需要将其包装在另一个功能中,例如
const withAverage = Component => mapProps(...)(Component)
但是AFAIK,没有办法在支持泛型的情况下将HOC分配给const
,例如
const withAverage<I,O> = mapProps<I, O>(...)
似乎只支持函数声明而不支持HOC分配。还是我错了?