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 @@
+