diff --git a/src/component/componentOptions.ts b/src/component/componentOptions.ts index 47743147..fba22fc3 100644 --- a/src/component/componentOptions.ts +++ b/src/component/componentOptions.ts @@ -1,10 +1,8 @@ +import { VNode, ComponentOptions as Vue2ComponentOptions } from 'vue' import { Data } from './common' import { ComponentPropsOptions, ExtractPropTypes } from './componentProps' -import { VNode } from 'vue' import { ComponentInstance, ComponentRenderProxy } from './componentProxy' -import { ComponentOptions as Vue2ComponentOptions } from 'vue' - export interface SetupContext { readonly attrs: Record readonly slots: { [key: string]: (...args: any[]) => VNode[] } @@ -43,12 +41,11 @@ interface ComponentOptionsBase< D = Data, C extends ComputedOptions = {}, M extends MethodOptions = {} -> - extends Omit< +> extends Omit< Vue2ComponentOptions, 'data' | 'computed' | 'method' | 'setup' | 'props' > { - data?: (this: Props, vm: Props) => D + data?: (this: Props & Vue, vm: Props) => D computed?: C methods?: M } @@ -70,7 +67,7 @@ export type ComponentOptionsWithProps< Props = ExtractPropTypes > = ComponentOptionsBase & { props?: PropsOptions - emits?: string[] | Record boolean) > + emits?: string[] | Record boolean)> setup?: SetupFunction } & ThisType> diff --git a/test-dts/defineComponent.test-d.ts b/test-dts/defineComponent.test-d.ts index 6cc8b8a9..bf5ddef4 100644 --- a/test-dts/defineComponent.test-d.ts +++ b/test-dts/defineComponent.test-d.ts @@ -242,6 +242,7 @@ describe('type inference w/ options API', () => { // Limitation: we cannot expose the return result of setup() on `this` // here in data() - somehow that would mess up the inference expectType(this.a) + expectType(this.$emit) return { c: this.a || 123, }