summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/khaki-ties-carry.md5
-rw-r--r--packages/astro/types.d.ts11
2 files changed, 13 insertions, 3 deletions
diff --git a/.changeset/khaki-ties-carry.md b/.changeset/khaki-ties-carry.md
new file mode 100644
index 000000000..42c4f71c1
--- /dev/null
+++ b/.changeset/khaki-ties-carry.md
@@ -0,0 +1,5 @@
+---
+"astro": patch
+---
+
+Fixes Polymorphic type helper causing TypeScript errors in certain cases after the previous update
diff --git a/packages/astro/types.d.ts b/packages/astro/types.d.ts
index 3069f502b..b04f062fd 100644
--- a/packages/astro/types.d.ts
+++ b/packages/astro/types.d.ts
@@ -1,13 +1,13 @@
import './astro-jsx';
import type { AstroBuiltinAttributes } from './dist/@types/astro.js';
-import type { Simplify } from './dist/type-utils.js';
+import type { OmitIndexSignature, Simplify } from './dist/type-utils.js';
/** Any supported HTML or SVG element name, as defined by the HTML specification */
export type HTMLTag = keyof astroHTML.JSX.DefinedIntrinsicElements;
/** The built-in attributes for any known HTML or SVG element name */
export type HTMLAttributes<Tag extends HTMLTag> = Omit<
- astroHTML.JSX.IntrinsicElements[Tag],
+ astroHTML.JSX.DefinedIntrinsicElements[Tag],
keyof Omit<AstroBuiltinAttributes, 'class:list'>
>;
@@ -18,7 +18,12 @@ export type CSSProperty = keyof astroHTML.JSX.KebabCSSDOMProperties;
type PolymorphicAttributes<P extends { as: HTMLTag }> = Omit<P, 'as'> & {
as?: P['as'];
-} & HTMLAttributes<P['as']>;
+} & Omit<
+ // This is the same as HTMLAttributes<P['as']>, except we're using OmitIndexSignature to remove the index signature,
+ // used for data attribute, because it seems like it get too complex for TypeScript with it, not sure why.
+ OmitIndexSignature<astroHTML.JSX.DefinedIntrinsicElements[P['as']]>,
+ keyof Omit<AstroBuiltinAttributes, 'class:list'>
+ >;
export type Polymorphic<P extends { as: HTMLTag }> = PolymorphicAttributes<
Omit<P, 'as'> & { as: NonNullable<P['as']> }