admin管理员组

文章数量:1325674

I have a simple anchor tag ponent that extends the native <a> tag.

I've defined my typescript interface to extend React.HTMLAttributes<HTMLAnchorElement>, but when I attempt to use ponent A and pass props like rel and target I get IntrinsicAttributes errors.

How can I extend the anchor tag properly?

Component definition:

interface Props extends React.HTMLAttributes<HTMLAnchorElement> {
  href: string;
  className?: string;
}

export const A: FC<Props> = ({ href, className, children, ...rest }) => {
  const baseClasses = "text-mb-green-200";
  const classes = `${baseClasses} ${className ? className : ""}`;

  return (
    <a {...rest} href={href} className={classes}>
      {children}
    </a>
  );
};

Attempted use:

<A {...rest} href={href} className={classes} rel={rel} target={target}>
   {children}
</A>

TS Error:

Type '{ children: ReactNode; href: string; className: string; target: string; }' is not assignable to type 'IntrinsicAttributes & Props & { children?: ReactNode; }'.
  Property 'rel' does not exist on type 'IntrinsicAttributes & Props & { children?: ReactNode; }'.ts(2322)

I have a simple anchor tag ponent that extends the native <a> tag.

I've defined my typescript interface to extend React.HTMLAttributes<HTMLAnchorElement>, but when I attempt to use ponent A and pass props like rel and target I get IntrinsicAttributes errors.

How can I extend the anchor tag properly?

Component definition:

interface Props extends React.HTMLAttributes<HTMLAnchorElement> {
  href: string;
  className?: string;
}

export const A: FC<Props> = ({ href, className, children, ...rest }) => {
  const baseClasses = "text-mb-green-200";
  const classes = `${baseClasses} ${className ? className : ""}`;

  return (
    <a {...rest} href={href} className={classes}>
      {children}
    </a>
  );
};

Attempted use:

<A {...rest} href={href} className={classes} rel={rel} target={target}>
   {children}
</A>

TS Error:

Type '{ children: ReactNode; href: string; className: string; target: string; }' is not assignable to type 'IntrinsicAttributes & Props & { children?: ReactNode; }'.
  Property 'rel' does not exist on type 'IntrinsicAttributes & Props & { children?: ReactNode; }'.ts(2322)
Share Improve this question asked Nov 17, 2020 at 19:08 marzipanmarzipan 1712 silver badges14 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 11

Use React.AnchorHTMLAttributes instead of React.HTMLAttributes.

I found this out by looking in the node_modules/@types/react/index.d.ts file and doing a file-search for rel?:

interface Props extends React.AnchorHTMLAttributes<HTMLAnchorElement> {

}

本文标签: