В конце концов, я просто расширил ButtonBaseProps и переопределил некоторые необходимые реквизиты. Это очень простой способ решения проблемы, требующий ручного добавления недостающих реквизитов в интерфейс, но пока он подойдет.
import ButtonBase, { ButtonBaseProps } from "@material-ui/core/ButtonBase";
import { styled } from "@material-ui/core/styles";
export interface MyButtonProps extends ButtonBaseProps {
component?: any;
}
interface MyButtonAsLinkProps extends MyButtonProps {
component: "a";
href: string;
target?: "_blank";
rel?: "noopener noreferrer";
}
export const MyButton = withStyles({
root: {
color: "red",
},
})(ButtonBase) as (props: MyButtonProps | MyButtonAsLinkProps ) => React.ReactElement;