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) {