Skip to content

Commit 9a5f84e

Browse files
committed
types: work on typing emitted
1 parent 91d529d commit 9a5f84e

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

src/vue-wrapper.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,14 @@ export class VueWrapper<T extends ComponentPublicInstance> {
6262
return true
6363
}
6464

65-
emitted(eventName?: string): Record<string, unknown[]> | undefined {
66-
// TODO Should we define this?
67-
// @ts-ignore
68-
return eventName ? this.vm.__emitted[eventName] : this.vm.__emitted
65+
emitted<T = unknown>(): Record<string, T[]>
66+
emitted<T = unknown>(eventName?: string): T[]
67+
emitted<T = unknown>(eventName?: string): T[] | Record<string, T[]> {
68+
if (eventName) {
69+
const emitted = (this.vm['__emitted'] as Record<string, T[]>)[eventName]
70+
return emitted
71+
}
72+
return this.vm['__emitted'] as Record<string, T[]>
6973
}
7074

7175
html() {

test-dts/wrapper.d-test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,15 @@ expectType<SVGLineElement | undefined>(lineArray[0].element)
6161
byClassArray = domWrapper.findAll('.todo')
6262
expectType<Element | undefined>(byClassArray[0].element)
6363

64+
// emitted
65+
// event name
66+
let incrementEvent = wrapper.emitted<{ count: number }>('increment')
67+
expectType<{ count: number }>(incrementEvent[0])
68+
69+
// without event name
70+
let allEvents = wrapper.emitted()
71+
expectType<Record<string, unknown>>(allEvents)
72+
6473
// get
6574
// HTML element selector
6675
let input = wrapper.get('input')

0 commit comments

Comments
 (0)