-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'
}
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>
return app
},
- component(name: string, component?: Component): any {
+ component(name: string, component?: PublicAPIComponent): any {
if (__DEV__) {
validateComponentName(name, context.config)
}
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
},
import {
ComponentInternalInstance,
Data,
- Component,
SetupContext,
RenderFunction,
- SFCInternalOptions
+ SFCInternalOptions,
+ PublicAPIComponent
} from './component'
import {
isFunction,
push: (item: any) => void,
parentInstance: ComponentInternalInstance
) => void
- components?: Record<
- string,
- Component | { new (): ComponentPublicInstance<any, any, any, any, any> }
- >
+ components?: Record<string, PublicAPIComponent>
directives?: Record<string, Directive>
inheritAttrs?: boolean
}
export type Component = ComponentOptions | FunctionalComponent
+
+// A type used in public APIs where a component type is expected.
+// The constructor type is an artificial type returned by defineComponent().
+export type PublicAPIComponent =
+ | Component
+ | { new (): ComponentPublicInstance<any, any, any, any, any> }
+
export { ComponentOptions }
type LifecycleHook = Function[] | null