Skip to content

Commit b287aee

Browse files
authoredJul 17, 2024··
fix(compiler-sfc): correctly resolve type annotation for declared function (#11279)
close #11266
1 parent 3dc5a1a commit b287aee

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed
 

‎packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts

+20
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,26 @@ describe('resolveType', () => {
635635
})
636636
})
637637

638+
// #11266
639+
test('correctly parse type annotation for declared function', () => {
640+
const { props } = resolve(`
641+
import { ExtractPropTypes } from 'vue'
642+
interface UploadFile<T = any> {
643+
xhr?: T
644+
}
645+
declare function uploadProps<T = any>(): {
646+
fileList: {
647+
type: PropType<UploadFile<T>[]>
648+
default: UploadFile<T>[]
649+
}
650+
}
651+
type UploadProps = ExtractPropTypes<ReturnType<typeof uploadProps>>
652+
defineProps<UploadProps>()`)
653+
expect(props).toStrictEqual({
654+
fileList: ['Array'],
655+
})
656+
})
657+
638658
describe('generics', () => {
639659
test('generic with type literal', () => {
640660
expect(

‎packages/compiler-sfc/src/script/resolveType.ts

+1
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ function innerResolveTypeElements(
177177
case 'TSInterfaceDeclaration':
178178
return resolveInterfaceMembers(ctx, node, scope, typeParameters)
179179
case 'TSTypeAliasDeclaration':
180+
case 'TSTypeAnnotation':
180181
case 'TSParenthesizedType':
181182
return resolveTypeElements(
182183
ctx,

0 commit comments

Comments
 (0)
Please sign in to comment.