diff --git a/packages/compiler-sfc/__tests__/__snapshots__/compileScriptRefSugar.spec.ts.snap b/packages/compiler-sfc/__tests__/__snapshots__/compileScriptRefSugar.spec.ts.snap index f49709193..6dc4229ce 100644 --- a/packages/compiler-sfc/__tests__/__snapshots__/compileScriptRefSugar.spec.ts.snap +++ b/packages/compiler-sfc/__tests__/__snapshots__/compileScriptRefSugar.spec.ts.snap @@ -92,6 +92,23 @@ return { n, a, b, c } }" `; +exports[``, + { + refSugar: true + } + ) + assertCode(content) + expect(content).toMatch('console.log(n.value!)') + expect(content).toMatch('console.log(n.value as number)') + }) + describe('errors', () => { test('non-let $ref declaration', () => { expect(() => diff --git a/packages/compiler-sfc/src/compileScript.ts b/packages/compiler-sfc/src/compileScript.ts index a3f86a3dd..b7f940fc8 100644 --- a/packages/compiler-sfc/src/compileScript.ts +++ b/packages/compiler-sfc/src/compileScript.ts @@ -1781,7 +1781,12 @@ export function walkIdentifiers( ;(walk as any)(root, { enter(node: Node & { scopeIds?: Set }, parent: Node | undefined) { parent && parentStack.push(parent) - if (node.type.startsWith('TS')) { + if ( + parent && + parent.type.startsWith('TS') && + parent.type !== 'TSAsExpression' && + parent.type !== 'TSNonNullExpression' + ) { return this.skip() } if (onNode && onNode(node, parent!, parentStack) === false) {