diff --git a/packages/svelte2tsx/src/svelte2tsx/processInstanceScriptContent.ts b/packages/svelte2tsx/src/svelte2tsx/processInstanceScriptContent.ts
index 2c6785793..eb50c0872 100644
--- a/packages/svelte2tsx/src/svelte2tsx/processInstanceScriptContent.ts
+++ b/packages/svelte2tsx/src/svelte2tsx/processInstanceScriptContent.ts
@@ -142,9 +142,17 @@ export function processInstanceScriptContent(
};
const handleStore = (ident: ts.Identifier, parent: ts.Node) => {
+ // ignore "typeof $store"
+ if (parent && parent.kind === ts.SyntaxKind.TypeQuery) {
+ return;
+ }
+ // ignore break
+ if (parent && parent.kind === ts.SyntaxKind.BreakStatement) {
+ return;
+ }
+
const storename = ident.getText().slice(1); // drop the $
// handle assign to
- // eslint-disable-next-line max-len
if (
parent &&
ts.isBinaryExpression(parent) &&
@@ -160,10 +168,7 @@ export function processInstanceScriptContent(
str.appendLeft(parent.end + astOffset, ')');
return;
}
- // ignore break
- if (parent && parent.kind === ts.SyntaxKind.BreakStatement) {
- return;
- }
+
// handle Assignment operators ($store +=, -=, *=, /=, %=, **=, etc.)
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Assignment
const operators = {
diff --git a/packages/svelte2tsx/test/svelte2tsx/samples/typeof-$store/expected.tsx b/packages/svelte2tsx/test/svelte2tsx/samples/typeof-$store/expected.tsx
new file mode 100644
index 000000000..6e406174a
--- /dev/null
+++ b/packages/svelte2tsx/test/svelte2tsx/samples/typeof-$store/expected.tsx
@@ -0,0 +1,14 @@
+///
+<>>;
+import {writable} from "svelte/store";
+function render() {
+
+
+ const foo = writable(1)/*Ωignore_startΩ*/;let $foo = __sveltets_store_get(foo);/*Ωignore_endΩ*/;
+ type Foo = typeof $foo;
+;
+() => (<>>);
+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/typeof-$store/input.svelte b/packages/svelte2tsx/test/svelte2tsx/samples/typeof-$store/input.svelte
new file mode 100644
index 000000000..5bf160f88
--- /dev/null
+++ b/packages/svelte2tsx/test/svelte2tsx/samples/typeof-$store/input.svelte
@@ -0,0 +1,5 @@
+
\ No newline at end of file