mirror of https://github.com/vuejs/core.git
fix(compiler-sfc): correctly resolve type annotation for declared function (#11279)
close #11266
This commit is contained in:
parent
3dc5a1ad98
commit
b287aeec3e
|
@ -635,6 +635,26 @@ describe('resolveType', () => {
|
|||
})
|
||||
})
|
||||
|
||||
// #11266
|
||||
test('correctly parse type annotation for declared function', () => {
|
||||
const { props } = resolve(`
|
||||
import { ExtractPropTypes } from 'vue'
|
||||
interface UploadFile<T = any> {
|
||||
xhr?: T
|
||||
}
|
||||
declare function uploadProps<T = any>(): {
|
||||
fileList: {
|
||||
type: PropType<UploadFile<T>[]>
|
||||
default: UploadFile<T>[]
|
||||
}
|
||||
}
|
||||
type UploadProps = ExtractPropTypes<ReturnType<typeof uploadProps>>
|
||||
defineProps<UploadProps>()`)
|
||||
expect(props).toStrictEqual({
|
||||
fileList: ['Array'],
|
||||
})
|
||||
})
|
||||
|
||||
describe('generics', () => {
|
||||
test('generic with type literal', () => {
|
||||
expect(
|
||||
|
|
|
@ -177,6 +177,7 @@ function innerResolveTypeElements(
|
|||
case 'TSInterfaceDeclaration':
|
||||
return resolveInterfaceMembers(ctx, node, scope, typeParameters)
|
||||
case 'TSTypeAliasDeclaration':
|
||||
case 'TSTypeAnnotation':
|
||||
case 'TSParenthesizedType':
|
||||
return resolveTypeElements(
|
||||
ctx,
|
||||
|
|
Loading…
Reference in New Issue