Skip to content

Commit 49381d2

Browse files
committed
fix(types): change find/findAll type to infer vm type from an argument
1 parent a0e9e63 commit 49381d2

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

types/index.d.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,15 @@ interface Wrapper<V extends Vue> extends BaseWrapper {
5353
readonly element: HTMLElement
5454
readonly options: WrapperOptions
5555

56-
find<R extends Vue> (selector: Selector): Wrapper<R>
57-
findAll<R extends Vue> (selector: Selector): WrapperArray<R>
56+
find<R extends Vue, Ctor extends VueClass<R> = VueClass<R>> (selector: Ctor): Wrapper<R>
57+
find<R extends Vue> (selector: ComponentOptions<R>): Wrapper<R>
58+
find (selector: FunctionalComponentOptions): Wrapper<Vue>
59+
find (selector: string): Wrapper<Vue>
60+
61+
findAll<R extends Vue, Ctor extends VueClass<R> = VueClass<R>> (selector: Ctor): WrapperArray<R>
62+
findAll<R extends Vue> (selector: ComponentOptions<R>): WrapperArray<R>
63+
findAll (selector: FunctionalComponentOptions): WrapperArray<Vue>
64+
findAll (selector: string): WrapperArray<Vue>
5865

5966
html (): string
6067
text (): string

types/test/wrapper.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { mount } from '../'
2-
import { normalOptions, Normal, ClassComponent } from './resources'
2+
import { normalOptions, functionalOptions, Normal, ClassComponent } from './resources'
33

44
/**
55
* Tests for BaseWrapper API
@@ -38,8 +38,15 @@ let el: HTMLElement = wrapper.element
3838

3939
bool = wrapper.options.attachedToDocument
4040

41-
wrapper = wrapper.find('.foo')
42-
let array = wrapper.findAll<Normal>(normalOptions)
41+
let found = wrapper.find('.foo')
42+
found = wrapper.find(normalOptions)
43+
found = wrapper.find(functionalOptions)
44+
found = wrapper.find<ClassComponent>(ClassComponent)
45+
46+
let array = wrapper.findAll('.bar')
47+
array = wrapper.findAll(normalOptions)
48+
array = wrapper.findAll(functionalOptions)
49+
array = wrapper.findAll<ClassComponent>(ClassComponent)
4350

4451
let str: string = wrapper.html()
4552
str = wrapper.text()
@@ -49,4 +56,4 @@ str = wrapper.name()
4956
* Tests for WrapperArray API
5057
*/
5158
let num: number = array.length
52-
wrapper = array.at(1)
59+
found = array.at(1)

0 commit comments

Comments
 (0)