我想使用高阶组件向我的组件包装器添加样式。typescript说ComponentWithAdddedColors
.
type Props = {
bg?: string;
};
function withColors<TProps>(
Component: React.ComponentType<TProps>
): React.ComponentType<TProps & Props> {
const ColoredComponent: React.ComponentType<TProps & Props> = props => {
const { bg, ...componentProps } = props;
const ComponentWithAdddedColors = styled(Component)`
${bg && `background: ${bg};`}
`;
return <ComponentWithAdddedColors {...componentProps} />; //Typecheck error
};
return ColoredComponent;
}
当我想返回传递给 HOC 的组件时,{...componentProps}
也会出现类型检查错误。
...
{
const ColoredComponent: React.ComponentType<TProps & Props> = props => {
const { bg, ...componentProps } = props;
return <Component {...componentProps} />; //Typecheck error
};
return ColoredComponent;
}
但是,当我将所有内容传递给 Component 时{...props}
,没有类型检查错误。
...
{
const ColoredComponent: React.ComponentType<TProps & Props> = props => {
return <Component {...props} />; //No error
};
return ColoredComponent;
}