fix(types): app.component should accept defineComponent return type

fix #730
This commit is contained in:
Evan You
2020-02-15 21:04:29 -05:00
parent 9d2ac6675a
commit 57ee5df364
3 changed files with 19 additions and 13 deletions

View File

@@ -1,4 +1,9 @@
import { Component, Data, validateComponentName } from './component'
import {
Component,
Data,
validateComponentName,
PublicAPIComponent
} from './component'
import { ComponentOptions } from './apiOptions'
import { ComponentPublicInstance } from './componentProxy'
import { Directive, validateDirectiveName } from './directives'
@@ -82,10 +87,7 @@ export function createAppContext(): AppContext {
}
export type CreateAppFunction<HostElement> = (
rootComponent:
| Component
// for compatibility with defineComponent() return types
| { new (): ComponentPublicInstance<any, any, any, any, any> },
rootComponent: PublicAPIComponent,
rootProps?: Data | null
) => App<HostElement>
@@ -156,7 +158,7 @@ export function createAppAPI<HostNode, HostElement>(
return app
},
component(name: string, component?: Component): any {
component(name: string, component?: PublicAPIComponent): any {
if (__DEV__) {
validateComponentName(name, context.config)
}
@@ -166,7 +168,7 @@ export function createAppAPI<HostNode, HostElement>(
if (__DEV__ && context.components[name]) {
warn(`Component "${name}" has already been registered in target app.`)
}
context.components[name] = component
context.components[name] = component as Component
return app
},