From 7df5e70c83378ba23d4359693a7a6a72a4e1d18c Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 24 Dec 2019 11:04:35 -0500 Subject: [PATCH] types: accept defineComponent return types in app.mount --- packages/runtime-core/src/apiCreateApp.ts | 5 ++++- test-dts/defineComponent.test-d.tsx | 21 ++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) 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') +})