11import {
2- PublicAPIComponent ,
32 Component ,
3+ ConcreteComponent ,
44 currentInstance ,
55 ComponentInternalInstance ,
66 isInSSRComponentSetup
77} from './component'
88import { isFunction , isObject } from '@vue/shared'
9- import { ComponentPublicInstance } from './componentProxy '
9+ import { ComponentPublicInstance } from './componentPublicInstance '
1010import { createVNode } from './vnode'
1111import { defineComponent } from './apiDefineComponent'
1212import { warn } from './warning'
1313import { ref } from '@vue/reactivity'
1414import { handleError , ErrorCodes } from './errorHandling'
1515
16- export type AsyncComponentResolveResult < T = PublicAPIComponent > =
17- | T
18- | { default : T } // es modules
16+ export type AsyncComponentResolveResult < T = Component > = T | { default : T } // es modules
1917
2018export type AsyncComponentLoader < T = any > = ( ) => Promise <
2119 AsyncComponentResolveResult < T >
2220>
2321
2422export interface AsyncComponentOptions < T = any > {
2523 loader : AsyncComponentLoader < T >
26- loadingComponent ?: PublicAPIComponent
27- errorComponent ?: PublicAPIComponent
24+ loadingComponent ?: Component
25+ errorComponent ?: Component
2826 delay ?: number
2927 timeout ?: number
3028 suspensible ?: boolean
@@ -37,7 +35,7 @@ export interface AsyncComponentOptions<T = any> {
3735}
3836
3937export function defineAsyncComponent <
40- T extends PublicAPIComponent = { new ( ) : ComponentPublicInstance }
38+ T extends Component = { new ( ) : ComponentPublicInstance }
4139> ( source : AsyncComponentLoader < T > | AsyncComponentOptions < T > ) : T {
4240 if ( isFunction ( source ) ) {
4341 source = { loader : source }
@@ -53,8 +51,8 @@ export function defineAsyncComponent<
5351 onError : userOnError
5452 } = source
5553
56- let pendingRequest : Promise < Component > | null = null
57- let resolvedComp : Component | undefined
54+ let pendingRequest : Promise < ConcreteComponent > | null = null
55+ let resolvedComp : ConcreteComponent | undefined
5856
5957 let retries = 0
6058 const retry = ( ) => {
@@ -63,8 +61,8 @@ export function defineAsyncComponent<
6361 return load ( )
6462 }
6563
66- const load = ( ) : Promise < Component > => {
67- let thisRequest : Promise < Component >
64+ const load = ( ) : Promise < ConcreteComponent > => {
65+ let thisRequest : Promise < ConcreteComponent >
6866 return (
6967 pendingRequest ||
7068 ( thisRequest = pendingRequest = loader ( )
@@ -135,7 +133,9 @@ export function defineAsyncComponent<
135133 onError ( err )
136134 return ( ) =>
137135 errorComponent
138- ? createVNode ( errorComponent as Component , { error : err } )
136+ ? createVNode ( errorComponent as ConcreteComponent , {
137+ error : err
138+ } )
139139 : null
140140 } )
141141 }
@@ -175,19 +175,19 @@ export function defineAsyncComponent<
175175 if ( loaded . value && resolvedComp ) {
176176 return createInnerComp ( resolvedComp , instance )
177177 } else if ( error . value && errorComponent ) {
178- return createVNode ( errorComponent as Component , {
178+ return createVNode ( errorComponent as ConcreteComponent , {
179179 error : error . value
180180 } )
181181 } else if ( loadingComponent && ! delayed . value ) {
182- return createVNode ( loadingComponent as Component )
182+ return createVNode ( loadingComponent as ConcreteComponent )
183183 }
184184 }
185185 }
186186 } ) as any
187187}
188188
189189function createInnerComp (
190- comp : Component ,
190+ comp : ConcreteComponent ,
191191 { vnode : { props, children } } : ComponentInternalInstance
192192) {
193193 return createVNode ( comp , props , children )
0 commit comments