Require at least one type

type RequireAtLeastOne<T, Keys extends keyof T = keyof T> =
  Keys extends keyof T
    ? Required<Pick<T, Keys>> & Partial<Omit<T, Keys>>
    : never;

type LinkCore = {
  href?: string;
  imagesrcset?: string;
};

interface Link extends HTMLElementInterfaceCreator<HTMLLinkElement, "link"> {
  attributes:
    RequireAtLeastOne<LinkCore, "href" | "imagesrcset">
    & Partial<Record<
        | "crossorigin"
        | "rel"
        | "media"
        | "integrity"
        | "hreflang"
        | "type"
        | "referrerpolicy"
        | "sizes"
        | "imagesizes"
        | "as"
        | "blocking"
        | "color"
        | "disabled"
        | "fetchpriority"
        | "title",
        string
      >>
    & Partial<MapAttributesGlobal>
}

Enforces at least one of href or imagesrcset
Allows both