当我们在封装一个高阶组件时,常常需要用到原组件的props类型,然后添加上新的props。比如在react-native中,当需要使用Image组件,封装一个可以自动获取图片宽高的ResizeImage组件时,我们需要先获得Image组件的所有props的类型,然后使用联合类型创建一个ResizeImage的props类型,但是我们该如何获取Image的props类型呢?
答案是使用React.ComponentProps,它接收一个范型,范型里传入你要获取props类型的组件类型,本例中则是React.ComponentProps<typeof Image>,这样我们就可以愉快的创造一个新的props类型,而不丢失Image原有的props类型啦!
stackoverflow上还有这样一种解决方法:type PropsOf<C> = C extends (props: infer P) => any ? P : never,但我没有查证,希望有时间的小伙伴可以试试。