Типизация HOC в React
type WithNameProps = {
name: string
}
function withName<T >(OriginComponent:ComponentType<T & WithNameProps>) :ComponentType<Omit<T,'name'>>{
const name:string = 'Alex'
return function(props){
return(
<OriginComponent {...props as T} name={name}/>
)
}
}
function withName<T extends WithNameProps>(OriginComponent:ComponentType<T>) :ComponentType<Omit<T,'name'>>{
const name:string = 'Alex'
return function(props){
return(
<OriginComponent {...props as T} name={name}/>
)
}
}
Как правильно типизировать HOС? В 1м случает если мы ошибемся в name typeScript подскажет ошибка в типе или в имени свойства. Во 2м варианте это не работает , но по логике правильный 2й вариант где мы говорим прими свои пропсы но так же они должны включать name.