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}`
|
||||
? T[Uncapitalize<C>] extends null
|
||||
? (...args: any[]) => any
|
||||
: T[Uncapitalize<C>]
|
||||
: (
|
||||
...args: T[Uncapitalize<C>] extends (...args: infer P) => any
|
||||
? P
|
||||
: never
|
||||
) => any
|
||||
: 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
|
||||
defineComponent({
|
||||
setup(props, { emit }) {
|
||||
|
Loading…
Reference in New Issue
Block a user