Привет! Есть компонент, корнем которого может быть либо тег a, либо button. Это будет решаться в зависимости от наличия пропа href
const TappableComponent = (props: TappableComponentProps) => {
const Component = props?.href ? 'a' : 'button';
return <Component>...</Component>
}
Соответственно, нужно чтобы в пропсах можно было указать все аттрибуты от button и от a. Сделал так:
interface TappableComponentProps extends
Partial<AnchorHTMLAttributes<HTMLAnchorElement>>,
Partial<ButtonHTMLAttributes<HTMLButtonElement>> {
size?: 's' | 'm' | 'l';
}
но ts ругается на большое количество не идентичных типов в AnchorHTMLAttributes и ButtonHTMLAttributes.
вручную вытягивать через
Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'href' | 'target' | etc>
кажется неверным методом, может есть решение получше?