Skip to content

Commit 36d79e2

Browse files
committed
fix some vue-tsc
1 parent a33efb1 commit 36d79e2

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

src/baseWrapper.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import {
2626
FindComponentSelector,
2727
NameSelector,
2828
RefSelector,
29+
UnknownRenderedVue,
2930
VueNode
3031
} from './types'
3132
import WrapperLike from './interfaces/wrapperLike'
@@ -185,15 +186,15 @@ export default abstract class BaseWrapper<ElementType extends Node>
185186
selector: string
186187
): DOMWrapper<Element>
187188

189+
// searching by name or ref always results in VueWrapper
190+
findComponent<T extends never>(
191+
selector: NameSelector | RefSelector
192+
): VueWrapper<UnknownRenderedVue>
188193
// searching for component created via defineComponent results in VueWrapper of proper type
189194
findComponent<T extends DefinedComponent>(
190195
selector: T | Exclude<FindComponentSelector, FunctionalComponent>
191196
): VueWrapper<ComponentInstance<T>>
192197

193-
// searching by name or ref always results in VueWrapper
194-
findComponent<T extends never>(
195-
selector: NameSelector | RefSelector
196-
): VueWrapper
197198
findComponent<T extends ComponentPublicInstance>(
198199
selector: T | FindComponentSelector
199200
): VueWrapper<T>
@@ -340,17 +341,17 @@ export default abstract class BaseWrapper<ElementType extends Node>
340341
}
341342

342343
getComponent<T extends never>(selector: string): Omit<WrapperLike, 'exists'>
344+
// searching by name or ref always results in VueWrapper
345+
getComponent<T extends never>(
346+
selector: NameSelector | RefSelector
347+
): Omit<VueWrapper<UnknownRenderedVue>, 'exists'>
343348
getComponent<T extends DefinedComponent>(
344349
selector: T | Exclude<FindComponentSelector, FunctionalComponent>
345350
): Omit<VueWrapper<ComponentInstance<T>>, 'exists'>
346351
// searching for functional component results in DOMWrapper
347352
getComponent<T extends FunctionalComponent>(
348353
selector: T | string
349354
): Omit<DOMWrapper<Element>, 'exists'>
350-
// searching by name or ref always results in VueWrapper
351-
getComponent<T extends never>(
352-
selector: NameSelector | RefSelector
353-
): Omit<VueWrapper, 'exists'>
354355
getComponent<T extends ComponentPublicInstance>(
355356
selector: T | FindComponentSelector
356357
): Omit<VueWrapper<T>, 'exists'>

src/types.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,3 +167,8 @@ export type VueNode<T extends Node = Node> = T & {
167167
export type VueElement = VueNode<Element>
168168

169169
export type DefinedComponent = Component
170+
171+
export type UnknownRenderedVue = {
172+
$props: Record<string, any>
173+
$data: Record<string, any>
174+
}

tests/setProps.spec.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ describe('setProps', () => {
142142
})
143143
const FooResult = wrapper.findComponent({ name: 'Foo' })
144144

145-
// @ts-expect-error not valid prop
146145
expect(() => FooResult.setProps({ baz: 'bin' })).toThrowError(
147146
'You can only use setProps on your mounted component'
148147
)

0 commit comments

Comments
 (0)