diff --git a/.changeset/shy-starfishes-type.md b/.changeset/shy-starfishes-type.md new file mode 100644 index 0000000000..e6c5bf51da --- /dev/null +++ b/.changeset/shy-starfishes-type.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: strip exported TypeScript function overloads diff --git a/packages/svelte/src/compiler/phases/1-parse/remove_typescript_nodes.js b/packages/svelte/src/compiler/phases/1-parse/remove_typescript_nodes.js index 36a25f5124..8db29ab067 100644 --- a/packages/svelte/src/compiler/phases/1-parse/remove_typescript_nodes.js +++ b/packages/svelte/src/compiler/phases/1-parse/remove_typescript_nodes.js @@ -36,7 +36,11 @@ const visitors = { if (node.exportKind === 'type') return b.empty; if (node.declaration) { - return context.next(); + const result = context.next(); + if (result?.declaration?.type === 'EmptyStatement') { + return b.empty; + } + return result; } if (node.specifiers) { diff --git a/packages/svelte/tests/runtime-runes/samples/typescript/main.svelte b/packages/svelte/tests/runtime-runes/samples/typescript/main.svelte index 71638688f2..8a3db5dead 100644 --- a/packages/svelte/tests/runtime-runes/samples/typescript/main.svelte +++ b/packages/svelte/tests/runtime-runes/samples/typescript/main.svelte @@ -27,6 +27,10 @@ export type Foo = true } + export function overload(a: boolean): boolean; + export function overload(b: string): number; + export function overload(c: any): any {} + export type { Hello };