Vac*_*tny 5 generics typescript
在 TS 之前的世界中,我们曾经像这样将简单的 HOC 分配给 const。(代码使用recompose/mapProps)
const withAverage = mapProps(
(props) => ({ ...props, average: avg(props.numbers) })
)
Run Code Online (Sandbox Code Playgroud)
在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);
Run Code Online (Sandbox Code Playgroud)
TypeScript版本将HOC函数包装在另一个HOC函数中,但这不是必需的,mapProps已经提供了HOC所以只需
const withAverage = mapProps...
Run Code Online (Sandbox Code Playgroud)
就足够了,不需要将其包装在另一个函数中,例如
const withAverage = Component => mapProps(...)(Component)
Run Code Online (Sandbox Code Playgroud)
但据我所知,没有办法如何分配 HOC 来const支持泛型,比如
const withAverage<I,O> = mapProps<I, O>(...)
Run Code Online (Sandbox Code Playgroud)
泛型似乎仅支持函数声明,而不支持 HOC 赋值。还是我错了?
| 归档时间: |
|
| 查看次数: |
2382 次 |
| 最近记录: |