)
}
- return defineComponent<{}>({
+ return defineComponent({
name: 'AsyncComponentWrapper',
__asyncLoader: load,
ComponentOptionsWithObjectProps,
ComponentOptionsMixin,
RenderFunction,
- ComponentOptionsBase,
- ComponentProvideOptions
+ ComponentOptionsBase
} from './componentOptions'
import {
SetupContext,
Extends extends ComponentOptionsMixin = ComponentOptionsMixin,
E extends EmitsOptions = {},
EE extends string = string,
- Provide extends ComponentProvideOptions = ComponentProvideOptions,
- RawOptions extends {} = {},
PP = PublicProps,
Props = Readonly<
PropsOrPropOptions extends ComponentPropsOptions
> &
({} extends E ? {} : EmitsToProps<E>),
Defaults = ExtractDefaultPropTypes<PropsOrPropOptions>
-> = RawOptions &
- ComponentPublicInstanceConstructor<
- CreateComponentPublicInstance<
- Props,
- RawBindings,
- D,
- C,
- M,
- Mixin,
- Extends,
- E,
- PP & Props,
- Defaults,
- true
- > &
- Props
+> = ComponentPublicInstanceConstructor<
+ CreateComponentPublicInstance<
+ Props,
+ RawBindings,
+ D,
+ C,
+ M,
+ Mixin,
+ Extends,
+ E,
+ PP & Props,
+ Defaults,
+ true
> &
+ Props
+> &
ComponentOptionsBase<
Props,
RawBindings,
Extends,
E,
EE,
- Defaults,
- Provide
+ Defaults
> &
PP
Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,
Extends extends ComponentOptionsMixin = ComponentOptionsMixin,
E extends EmitsOptions = EmitsOptions,
- EE extends string = string,
- Provide extends ComponentProvideOptions = ComponentProvideOptions,
- Options extends ComponentOptionsWithoutProps<
- Props,
- RawBindings,
- D,
- C,
- M,
- Mixin,
- Extends,
- E,
- EE,
- Provide
- > = ComponentOptionsWithoutProps<
+ EE extends string = string
+>(
+ options: ComponentOptionsWithoutProps<
Props,
RawBindings,
D,
Mixin,
Extends,
E,
- EE,
- Provide
+ EE
>
->(
- options: Options &
- ComponentOptionsWithoutProps<
- Props,
- RawBindings,
- D,
- C,
- M,
- Mixin,
- Extends,
- E,
- EE,
- Provide
- >
-): DefineComponent<
- Props,
- RawBindings,
- D,
- C,
- M,
- Mixin,
- Extends,
- E,
- EE,
- Provide,
- Options
->
+): DefineComponent<Props, RawBindings, D, C, M, Mixin, Extends, E, EE>
// overload 3: object format with array props declaration
// props inferred as { [key in PropNames]?: any }
Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,
Extends extends ComponentOptionsMixin = ComponentOptionsMixin,
E extends EmitsOptions = Record<string, any>,
- EE extends string = string,
- Provide extends ComponentProvideOptions = ComponentProvideOptions,
- Options extends ComponentOptionsWithArrayProps<
- PropNames,
- RawBindings,
- D,
- C,
- M,
- Mixin,
- Extends,
- E,
- EE,
- Provide
- > = ComponentOptionsWithArrayProps<
+ EE extends string = string
+>(
+ options: ComponentOptionsWithArrayProps<
PropNames,
RawBindings,
D,
Mixin,
Extends,
E,
- EE,
- Provide
+ EE
>
->(
- options: Options &
- ComponentOptionsWithArrayProps<
- PropNames,
- RawBindings,
- D,
- C,
- M,
- Mixin,
- Extends,
- E,
- EE,
- Provide
- >
): DefineComponent<
Readonly<{ [key in PropNames]?: any }>,
RawBindings,
Mixin,
Extends,
E,
- EE,
- Provide,
- Options
+ EE
>
// overload 4: object format with object props declaration
Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,
Extends extends ComponentOptionsMixin = ComponentOptionsMixin,
E extends EmitsOptions = Record<string, any>,
- EE extends string = string,
- Provide extends ComponentProvideOptions = ComponentProvideOptions,
- Options extends ComponentOptionsWithObjectProps<
- PropsOptions,
- RawBindings,
- D,
- C,
- M,
- Mixin,
- Extends,
- E,
- EE,
- Provide
- > = ComponentOptionsWithObjectProps<
+ EE extends string = string
+>(
+ options: ComponentOptionsWithObjectProps<
PropsOptions,
RawBindings,
D,
Mixin,
Extends,
E,
- EE,
- Provide
+ EE
>
->(
- options: Options &
- ComponentOptionsWithObjectProps<
- PropsOptions,
- RawBindings,
- D,
- C,
- M,
- Mixin,
- Extends,
- E,
- EE,
- Provide
- >
-): DefineComponent<
- PropsOptions,
- RawBindings,
- D,
- C,
- M,
- Mixin,
- Extends,
- E,
- EE,
- Provide,
- Options
->
+): DefineComponent<PropsOptions, RawBindings, D, C, M, Mixin, Extends, E, EE>
// implementation, close to no-op
export function defineComponent(options: unknown) {
Extends extends ComponentOptionsMixin,
E extends EmitsOptions,
EE extends string = string,
- Defaults = {},
- Provide extends ComponentProvideOptions = ComponentProvideOptions
-> extends LegacyOptions<Props, D, C, M, Mixin, Extends, Provide>,
+ Defaults = {}
+> extends LegacyOptions<Props, D, C, M, Mixin, Extends>,
ComponentInternalOptions,
ComponentCustomOptions {
setup?: (
Extends extends ComponentOptionsMixin = ComponentOptionsMixin,
E extends EmitsOptions = EmitsOptions,
EE extends string = string,
- Provide extends ComponentProvideOptions = ComponentProvideOptions,
PE = Props & EmitsToProps<E>
> = ComponentOptionsBase<
PE,
Extends,
E,
EE,
- {},
- Provide
+ {}
> & {
props?: undefined
} & ThisType<
Extends extends ComponentOptionsMixin = ComponentOptionsMixin,
E extends EmitsOptions = EmitsOptions,
EE extends string = string,
- Provide extends ComponentProvideOptions = ComponentProvideOptions,
Props = Readonly<{ [key in PropNames]?: any }> & EmitsToProps<E>
> = ComponentOptionsBase<
Props,
Extends,
E,
EE,
- {},
- Provide
+ {}
> & {
props: PropNames[]
} & ThisType<
Extends extends ComponentOptionsMixin = ComponentOptionsMixin,
E extends EmitsOptions = EmitsOptions,
EE extends string = string,
- Provide extends ComponentProvideOptions = ComponentProvideOptions,
Props = Readonly<ExtractPropTypes<PropsOptions>> & EmitsToProps<E>,
Defaults = ExtractDefaultPropTypes<PropsOptions>
> = ComponentOptionsBase<
Extends,
E,
EE,
- Defaults,
- Provide
+ Defaults
> & {
props: PropsOptions & ThisType<void>
} & ThisType<
C extends ComputedOptions,
M extends MethodOptions,
Mixin extends ComponentOptionsMixin,
- Extends extends ComponentOptionsMixin,
- Provide extends ComponentProvideOptions = ComponentProvideOptions
+ Extends extends ComponentOptionsMixin
> {
compatConfig?: CompatConfig
computed?: C
methods?: M
watch?: ComponentWatchOptions
- provide?: Provide
+ provide?: ComponentProvideOptions
inject?: ComponentInjectOptions
// assets
OptionTypesKeys,
resolveMergedOptions,
shouldCacheAccess,
- MergedComponentOptionsOverride,
- ComponentProvideOptions
+ MergedComponentOptionsOverride
} from './componentOptions'
import { EmitsOptions, EmitFn } from './componentEmits'
import { Slots } from './componentSlots'
PublicM extends MethodOptions = UnwrapMixinsType<PublicMixin, 'M'> &
EnsureNonVoid<M>,
PublicDefaults = UnwrapMixinsType<PublicMixin, 'Defaults'> &
- EnsureNonVoid<Defaults>,
- Provide extends ComponentProvideOptions = ComponentProvideOptions
+ EnsureNonVoid<Defaults>
> = ComponentPublicInstance<
PublicP,
PublicB,
PublicProps,
PublicDefaults,
MakeDefaultsOptional,
- ComponentOptionsBase<
- P,
- B,
- D,
- C,
- M,
- Mixin,
- Extends,
- E,
- string,
- Defaults,
- Provide
- >
+ ComponentOptionsBase<P, B, D, C, M, Mixin, Extends, E, string, Defaults>
>
// public properties exposed on the proxy, which is used as the render context
expectType<Component>(MyComponent)
- expectType<typeof props>(MyComponent.props)
- // @ts-expect-error it should be an object and not any
- expectError<[]>(MyComponent.props)
-
- expectType<() => {}>(MyComponent.provide)
- // @ts-expect-error
- expectError<[]>(MyComponent.provide)
-
- expectType<() => null>(MyComponent.render)
-
- expectType<Function | undefined>(defineComponent({}).render)
-
// Test TSX
expectType<JSX.Element>(
<MyComponent
}
})
}
+
+// code generated by tsc / vue-tsc, make sure this continues to work
+// so we don't accidentally change the args order of DefineComponent
+declare const MyButton: import('vue').DefineComponent<
+ {},
+ () => JSX.Element,
+ {},
+ {},
+ {},
+ import('vue').ComponentOptionsMixin,
+ import('vue').ComponentOptionsMixin,
+ import('vue').EmitsOptions,
+ string,
+ import('vue').VNodeProps &
+ import('vue').AllowedComponentProps &
+ import('vue').ComponentCustomProps,
+ Readonly<import('vue').ExtractPropTypes<{}>>,
+ {}
+>
+
+;<MyButton class="x" />