helper
type ComponentProps<T> = T extends React.ComponentType<infer Props> ? Props : never;
// basic component
const Test = (props: { test: string; className?: string }) => (
<div className={props.className}>{`${props.test}`}</div>
);
// styled component
interface TestStyledProps extends ComponentProps<typeof Test> {
test: string;
}
const TestStyled = styled<React.ComponentType<TestStyledProps>>(Test)`
color: ${props => props.test};
`;
// mui styled component
interface ButtonStyledProps extends ComponentProps<typeof Button> {
test: string;
}
const ButtonStyled = styled<React.ComponentType<ButtonStyledProps>>(Button as any)`
flex-grow: ${props => props.test};
` as React.ComponentType<ButtonStyledProps>;
Возможно что TS не позволяет сделать тот вариант, как мне хотелось выше, тогда хотя бы есть такой вот костыль.
А что нужно то?
Обсуждают сегодня