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