javascript - Acceptera allmänna HTML-elementegenskaper i TypeScript Astro-komponent
Med Astro och TypeScript skapar jag en återanvändbar UI-komponent. Komponenten är bara ett omslag för HTML-taggen <a>. Problemet är att jag skulle behöva definiera gränssnittet Props med alla allmänna HTML-egenskaper för <a>-elementet själv (href, target, title osv.)
Finns det ett sätt att undvika detta i Astro genom att utöka ett visst gränssnitt?
---
export interface Props {} // I don't want to define `href`, `target`, etc. by myself here
const props = Astro.props;
---
<a {...props}>
<slot />
</a>
Som referens görs detta i React med typer som React.HTMLAttributes<HTMLAnchorElement>
Svar #1
Du kan utöka din komponents prop-interface med Astros inbyggda HTML-attributtyp
---
import type { HTMLAttributes } from 'astro/types';
export interface Props extends HTMLAttributes<'a'> {
// ...
}
const {
...attrs
} = Astro.props
---
<a {...attrs}>
<slot />
</a>
