parent
380608bd44
commit
1ce34e25d5
@ -44,7 +44,11 @@ export type EmitsToProps<T extends EmitsOptions> = T extends string[]
|
|||||||
`on${Capitalize<string & keyof T>}`]?: K extends `on${infer C}`
|
`on${Capitalize<string & keyof T>}`]?: K extends `on${infer C}`
|
||||||
? T[Uncapitalize<C>] extends null
|
? T[Uncapitalize<C>] extends null
|
||||||
? (...args: any[]) => any
|
? (...args: any[]) => any
|
||||||
: T[Uncapitalize<C>]
|
: (
|
||||||
|
...args: T[Uncapitalize<C>] extends (...args: infer P) => any
|
||||||
|
? P
|
||||||
|
: never
|
||||||
|
) => any
|
||||||
: never
|
: never
|
||||||
}
|
}
|
||||||
: {}
|
: {}
|
||||||
|
@ -966,6 +966,33 @@ describe('emits', () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// with tsx
|
||||||
|
const Component = defineComponent({
|
||||||
|
emits: {
|
||||||
|
click: (n: number) => typeof n === 'number'
|
||||||
|
},
|
||||||
|
setup(props, { emit }) {
|
||||||
|
expectType<((n: number) => any) | undefined>(props.onClick)
|
||||||
|
emit('click', 1)
|
||||||
|
// @ts-expect-error
|
||||||
|
expectError(emit('click'))
|
||||||
|
// @ts-expect-error
|
||||||
|
expectError(emit('click', 'foo'))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
defineComponent({
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<Component
|
||||||
|
onClick={(n: number) => {
|
||||||
|
return n + 1
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
// without emits
|
// without emits
|
||||||
defineComponent({
|
defineComponent({
|
||||||
setup(props, { emit }) {
|
setup(props, { emit }) {
|
||||||
|
Loading…
Reference in New Issue
Block a user