TS:将函数分配给具有通用类型的const

时间:2019-01-11 18:42:43

标签: typescript generics

在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分配。还是我错了?

0 个答案:

没有答案