diff --git a/packages/runtime-core/src/apiCreateApp.ts b/packages/runtime-core/src/apiCreateApp.ts index ce0a2371..fa50f0e8 100644 --- a/packages/runtime-core/src/apiCreateApp.ts +++ b/packages/runtime-core/src/apiCreateApp.ts @@ -17,7 +17,10 @@ export interface App { directive(name: string): Directive | undefined directive(name: string, directive: Directive): this mount( - rootComponent: Component, + rootComponent: + | Component + // for compatibility with defineComponent() return types + | { new (): ComponentPublicInstance }, rootContainer: HostElement | string, rootProps?: Data ): ComponentPublicInstance diff --git a/test-dts/defineComponent.test-d.tsx b/test-dts/defineComponent.test-d.tsx index 4024f752..5ae79cfe 100644 --- a/test-dts/defineComponent.test-d.tsx +++ b/test-dts/defineComponent.test-d.tsx @@ -1,5 +1,5 @@ import { expectError, expectType } from 'tsd' -import { describe, defineComponent, PropType, ref } from './index' +import { describe, defineComponent, PropType, ref, createApp } from './index' describe('with object props', () => { interface ExpectedProps { @@ -240,3 +240,22 @@ describe('type inference w/ options API', () => { } }) }) + +describe('compatibility w/ createApp', () => { + const comp = defineComponent({}) + createApp().mount(comp, '#hello') + + const comp2 = defineComponent({ + props: { foo: String } + }) + createApp().mount(comp2, '#hello') + + const comp3 = defineComponent({ + setup() { + return { + a: 1 + } + } + }) + createApp().mount(comp3, '#hello') +})