From ba7f7f90f689f6e7e0417a192d081db542de28ec Mon Sep 17 00:00:00 2001 From: edison Date: Wed, 24 Sep 2025 17:10:20 +0800 Subject: [PATCH] fix(compiler-sfc): add support for @vue-ignore in runtime type resolution (#13906) --- .../__tests__/compileScript/resolveType.spec.ts | 11 +++++++++++ packages/compiler-sfc/src/script/resolveType.ts | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts b/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts index a1476c76a..0f46d6085 100644 --- a/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts +++ b/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts @@ -149,6 +149,17 @@ describe('resolveType', () => { }) }) + test('TSPropertySignature with ignore', () => { + expect( + resolve(` + type Foo = string + defineProps<{ foo: /* @vue-ignore */ Foo }>() + `).props, + ).toStrictEqual({ + foo: ['Unknown'], + }) + }) + // #7553 test('union type', () => { expect( diff --git a/packages/compiler-sfc/src/script/resolveType.ts b/packages/compiler-sfc/src/script/resolveType.ts index fb79323cb..f6763b764 100644 --- a/packages/compiler-sfc/src/script/resolveType.ts +++ b/packages/compiler-sfc/src/script/resolveType.ts @@ -1515,6 +1515,13 @@ export function inferRuntimeType( isKeyOf = false, typeParameters?: Record, ): string[] { + if ( + node.leadingComments && + node.leadingComments.some(c => c.value.includes('@vue-ignore')) + ) { + return [UNKNOWN_TYPE] + } + try { switch (node.type) { case 'TSStringKeyword': -- 2.47.3