From 6928aaca06d8bcc37d17ce715ed04221d6eccc72 Mon Sep 17 00:00:00 2001 From: venus Date: Fri, 23 May 2025 13:58:42 +0200 Subject: [PATCH] feat: enable TS autocomplete for Svelte HTML element definitions (#15972) Covers #15971. adds autocomplete support to SvelteHTMLElements while preserving its functionality that key can be any string using string & {} TS trick. --- packages/svelte/elements.d.ts | 2 +- packages/svelte/svelte-html.d.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/svelte/elements.d.ts b/packages/svelte/elements.d.ts index 237e96c699..71f28b4f97 100644 --- a/packages/svelte/elements.d.ts +++ b/packages/svelte/elements.d.ts @@ -2066,7 +2066,7 @@ export interface SvelteHTMLElements { failed?: import('svelte').Snippet<[error: unknown, reset: () => void]>; }; - [name: string]: { [name: string]: any }; + [name: string & {}]: { [name: string]: any }; } export type ClassValue = string | import('clsx').ClassArray | import('clsx').ClassDictionary; diff --git a/packages/svelte/svelte-html.d.ts b/packages/svelte/svelte-html.d.ts index 5042eaa4b8..6e37cc93e8 100644 --- a/packages/svelte/svelte-html.d.ts +++ b/packages/svelte/svelte-html.d.ts @@ -8,7 +8,7 @@ import * as svelteElements from './elements.js'; /** * @internal do not use */ -type HTMLProps = Omit< +type HTMLProps = Omit< import('./elements.js').SvelteHTMLElements[Property], keyof Override > & @@ -250,7 +250,7 @@ declare global { }; // don't type svelte:options, it would override the types in svelte/elements and it isn't extendable anyway - [name: string]: { [name: string]: any }; + [name: string & {}]: { [name: string]: any }; } } }