From 8dcb6c7bbdd2905469e2bb11dfff27b58cc784b2 Mon Sep 17 00:00:00 2001 From: Carlos Rodrigues Date: Wed, 6 Jul 2022 09:28:25 +0100 Subject: [PATCH] fix(types): fix on* props incorrect type for TS 4.7 (#6216) fix #6052 --- .../runtime-core/src/apiDefineComponent.ts | 6 ++-- test-dts/defineComponent.test-d.tsx | 33 ++++++++++++++++++- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/packages/runtime-core/src/apiDefineComponent.ts b/packages/runtime-core/src/apiDefineComponent.ts index 83446346fab..c9c3ab61e85 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 2c4076b9b2d..e3e0f9ebc26 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>, {} > - ;