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', () => {
|
describe('generics', () => {
|
||||||
test('generic with type literal', () => {
|
test('generic with type literal', () => {
|
||||||
expect(
|
expect(
|
||||||
|
|
|
@ -177,6 +177,7 @@ function innerResolveTypeElements(
|
||||||
case 'TSInterfaceDeclaration':
|
case 'TSInterfaceDeclaration':
|
||||||
return resolveInterfaceMembers(ctx, node, scope, typeParameters)
|
return resolveInterfaceMembers(ctx, node, scope, typeParameters)
|
||||||
case 'TSTypeAliasDeclaration':
|
case 'TSTypeAliasDeclaration':
|
||||||
|
case 'TSTypeAnnotation':
|
||||||
case 'TSParenthesizedType':
|
case 'TSParenthesizedType':
|
||||||
return resolveTypeElements(
|
return resolveTypeElements(
|
||||||
ctx,
|
ctx,
|
||||||
|
|
Loading…
Reference in New Issue