React:Typescript 在扩展 HTMLAnchorElement 时无法识别内在属性
React: Typescript not recognizing intrinsic attributes when extending HTMLAnchorElement
我有一个扩展原生 <a>
标签的简单锚标签组件。
我已经定义了我的打字稿接口来扩展 React.HTMLAttributes<HTMLAnchorElement>
,但是当我尝试使用组件 A
并传递像 rel
和 target
这样的道具时,我得到了 IntrinsicAttributes错误。
如何正确扩展锚标签?
组件定义:
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>
);
};
尝试使用:
<A {...rest} href={href} className={classes} rel={rel} target={target}>
{children}
</A>
TS 错误:
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)
使用 React.AnchorHTMLAttributes
而不是 React.HTMLAttributes
。
我通过查看 node_modules/@types/react/index.d.ts
文件并搜索 rel?:
发现了这一点
interface Props extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
}
我有一个扩展原生 <a>
标签的简单锚标签组件。
我已经定义了我的打字稿接口来扩展 React.HTMLAttributes<HTMLAnchorElement>
,但是当我尝试使用组件 A
并传递像 rel
和 target
这样的道具时,我得到了 IntrinsicAttributes错误。
如何正确扩展锚标签?
组件定义:
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>
);
};
尝试使用:
<A {...rest} href={href} className={classes} rel={rel} target={target}>
{children}
</A>
TS 错误:
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)
使用 React.AnchorHTMLAttributes
而不是 React.HTMLAttributes
。
我通过查看 node_modules/@types/react/index.d.ts
文件并搜索 rel?:
interface Props extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
}