diff --git a/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts b/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts index b7056a68815..9bbad1dda61 100644 --- a/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts +++ b/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts @@ -535,6 +535,21 @@ describe('resolveType', () => { }) }) + test('keyof: fallback to UNKNOWN', () => { + const { props } = resolve( + ` + interface Barr {} + interface Bar extends Barr {} + type Foo = keyof Bar + defineProps<{ foo: Foo }>() + `, + ) + + expect(props).toStrictEqual({ + foo: ['UNKNOWN'], + }) + }) + test('ExtractPropTypes (element-plus)', () => { const { props, raw } = resolve( ` diff --git a/packages/compiler-sfc/src/script/resolveType.ts b/packages/compiler-sfc/src/script/resolveType.ts index 0ebf376e17c..e269c217e62 100644 --- a/packages/compiler-sfc/src/script/resolveType.ts +++ b/packages/compiler-sfc/src/script/resolveType.ts @@ -1496,7 +1496,7 @@ export function inferRuntimeType( } } - return types.size ? Array.from(types) : ['Object'] + return types.size ? Array.from(types) : [isKeyOf ? 'UNKNOWN' : 'Object'] } case 'TSPropertySignature': if (node.typeAnnotation) {