From: Carlos Rodrigues Date: Wed, 6 Jul 2022 08:28:25 +0000 (+0100) Subject: fix(types): fix on* props incorrect type for TS 4.7 (#6216) X-Git-Tag: v3.2.38~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8dcb6c7bbdd2905469e2bb11dfff27b58cc784b2;p=thirdparty%2Fvuejs%2Fcore.git fix(types): fix on* props incorrect type for TS 4.7 (#6216) fix #6052 --- diff --git a/packages/runtime-core/src/apiDefineComponent.ts b/packages/runtime-core/src/apiDefineComponent.ts index 83446346fa..c9c3ab61e8 100644 --- a/packages/runtime-core/src/apiDefineComponent.ts +++ b/packages/runtime-core/src/apiDefineComponent.ts @@ -103,7 +103,7 @@ export function defineComponent< M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, - E extends EmitsOptions = EmitsOptions, + E extends EmitsOptions = {}, EE extends string = string >( options: ComponentOptionsWithoutProps< @@ -130,7 +130,7 @@ export function defineComponent< M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, - E extends EmitsOptions = Record, + E extends EmitsOptions = {}, EE extends string = string >( options: ComponentOptionsWithArrayProps< @@ -168,7 +168,7 @@ export function defineComponent< M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, - E extends EmitsOptions = Record, + E extends EmitsOptions = {}, EE extends string = string >( options: ComponentOptionsWithObjectProps< diff --git a/test-dts/defineComponent.test-d.tsx b/test-dts/defineComponent.test-d.tsx index 2c4076b9b2..e3e0f9ebc2 100644 --- a/test-dts/defineComponent.test-d.tsx +++ b/test-dts/defineComponent.test-d.tsx @@ -1163,6 +1163,38 @@ describe('should allow to assign props', () => { expectType() }) +// #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 any)>(props.onTest) + } + }) +}) + // check if defineComponent can be exported export default { // function components @@ -1209,5 +1241,4 @@ declare const MyButton: DefineComponent< Readonly>, {} > - ;