diff --git a/packages/svelte2tsx/src/svelte2tsx/nodes/ImplicitTopLevelNames.ts b/packages/svelte2tsx/src/svelte2tsx/nodes/ImplicitTopLevelNames.ts index f8d9c7618..71596cfaf 100644 --- a/packages/svelte2tsx/src/svelte2tsx/nodes/ImplicitTopLevelNames.ts +++ b/packages/svelte2tsx/src/svelte2tsx/nodes/ImplicitTopLevelNames.ts @@ -38,8 +38,8 @@ export class ImplicitTopLevelNames { const start = expression.getStart() + this.astOffset; const end = expression.getEnd() + this.astOffset; - // () => ({}) - if (ts.isObjectLiteralExpression(expression)) { + // $: a = { .. } / $: a = .. as .. => () => ( .. ) + if (ts.isObjectLiteralExpression(expression) || ts.isAsExpression(expression)) { this.str.appendLeft(start, '('); this.str.appendRight(end, ')'); } diff --git a/packages/svelte2tsx/test/svelte2tsx/samples/reactive-assignment-type-cast/expected.tsx b/packages/svelte2tsx/test/svelte2tsx/samples/reactive-assignment-type-cast/expected.tsx new file mode 100644 index 000000000..759939a62 --- /dev/null +++ b/packages/svelte2tsx/test/svelte2tsx/samples/reactive-assignment-type-cast/expected.tsx @@ -0,0 +1,11 @@ +/// +<>;function render() { + + type Team = any; + let team = __sveltets_invalidate(() => ({ search: "Real", players: [] } as Team)); +; +() => (<>); +return { props: {}, slots: {}, getters: {}, events: {} }} + +export default class Input__SvelteComponent_ extends createSvelte2TsxComponent(__sveltets_partial(__sveltets_with_any_event(render()))) { +} \ No newline at end of file diff --git a/packages/svelte2tsx/test/svelte2tsx/samples/reactive-assignment-type-cast/input.svelte b/packages/svelte2tsx/test/svelte2tsx/samples/reactive-assignment-type-cast/input.svelte new file mode 100644 index 000000000..7a3b827ae --- /dev/null +++ b/packages/svelte2tsx/test/svelte2tsx/samples/reactive-assignment-type-cast/input.svelte @@ -0,0 +1,4 @@ +