M extends MethodOptions = {},
Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,
Extends extends ComponentOptionsMixin = ComponentOptionsMixin,
- E extends EmitsOptions = EmitsOptions,
+ E extends EmitsOptions = {},
EE extends string = string
>(
options: ComponentOptionsWithoutProps<
M extends MethodOptions = {},
Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,
Extends extends ComponentOptionsMixin = ComponentOptionsMixin,
- E extends EmitsOptions = Record<string, any>,
+ E extends EmitsOptions = {},
EE extends string = string
>(
options: ComponentOptionsWithArrayProps<
M extends MethodOptions = {},
Mixin extends ComponentOptionsMixin = ComponentOptionsMixin,
Extends extends ComponentOptionsMixin = ComponentOptionsMixin,
- E extends EmitsOptions = Record<string, any>,
+ E extends EmitsOptions = {},
EE extends string = string
>(
options: ComponentOptionsWithObjectProps<
expectType<JSX.Element>(<Parent {...child.$props} />)
})
+// #6052
+describe('prop starting with `on*` is broken', () => {
+ defineComponent({
+ props: {
+ onX: {
+ type: Function as PropType<(a: 1) => void>,
+ required: true
+ }
+ },
+ setup(props) {
+ expectType<(a: 1) => void>(props.onX)
+ props.onX(1)
+ }
+ })
+
+ defineComponent({
+ props: {
+ onX: {
+ type: Function as PropType<(a: 1) => void>,
+ required: true
+ }
+ },
+ emits: {
+ test: (a: 1) => true
+ },
+ setup(props) {
+ expectType<(a: 1) => void>(props.onX)
+ expectType<undefined | ((a: 1) => any)>(props.onTest)
+ }
+ })
+})
+
// check if defineComponent can be exported
export default {
// function components
Readonly<ExtractPropTypes<{}>>,
{}
>
-
;<MyButton class="x" />