refactor(types): use stricter settings

fix #847
This commit is contained in:
Evan You
2020-03-23 11:08:22 -04:00
parent b3890a93e3
commit b8c1be18f3
27 changed files with 385 additions and 381 deletions

View File

@@ -10,7 +10,8 @@ import {
withDirectives,
Plugin,
ref,
getCurrentInstance
getCurrentInstance,
defineComponent
} from '@vue/runtime-test'
import { mockWarn } from '@vue/shared'
@@ -18,16 +19,16 @@ describe('api: createApp', () => {
mockWarn()
test('mount', () => {
const Comp = {
const Comp = defineComponent({
props: {
count: {
default: 0
}
},
setup(props: { count: number }) {
setup(props) {
return () => props.count
}
}
})
const root1 = nodeOps.createElement('div')
createApp(Comp).mount(root1)
@@ -47,16 +48,16 @@ describe('api: createApp', () => {
})
test('unmount', () => {
const Comp = {
const Comp = defineComponent({
props: {
count: {
default: 0
}
},
setup(props: { count: number }) {
setup(props) {
return () => props.count
}
}
})
const root = nodeOps.createElement('div')
const app = createApp(Comp)

View File

@@ -9,7 +9,8 @@ import {
serializeInner,
serialize,
VNodeProps,
KeepAlive
KeepAlive,
TestElement
} from '@vue/runtime-test'
function mount(
@@ -42,13 +43,13 @@ function mockProps(extra: BaseTransitionProps = {}, withKeepAlive = false) {
}
}),
onEnter: jest.fn((el, done) => {
cbs.doneEnter[serialize(el)] = done
cbs.doneEnter[serialize(el as TestElement)] = done
}),
onAfterEnter: jest.fn(),
onEnterCancelled: jest.fn(),
onBeforeLeave: jest.fn(),
onLeave: jest.fn((el, done) => {
cbs.doneLeave[serialize(el)] = done
cbs.doneLeave[serialize(el as TestElement)] = done
}),
onAfterLeave: jest.fn(),
onLeaveCancelled: jest.fn(),
@@ -64,8 +65,10 @@ function assertCalls(
props: BaseTransitionProps,
calls: Record<string, number>
) {
Object.keys(calls).forEach((key: keyof BaseTransitionProps) => {
expect(props[key]).toHaveBeenCalledTimes(calls[key])
Object.keys(calls).forEach(key => {
expect(props[key as keyof BaseTransitionProps]).toHaveBeenCalledTimes(
calls[key]
)
})
}
@@ -147,19 +150,19 @@ describe('BaseTransition', () => {
const toggle = ref(true)
const hooks: VNodeProps = {
onVnodeBeforeMount(vnode) {
vnode.transition!.beforeEnter(vnode.el)
vnode.transition!.beforeEnter(vnode.el!)
},
onVnodeMounted(vnode) {
vnode.transition!.enter(vnode.el)
vnode.transition!.enter(vnode.el!)
},
onVnodeUpdated(vnode, oldVnode) {
if (oldVnode.props!.id !== vnode.props!.id) {
if (vnode.props!.id) {
vnode.transition!.beforeEnter(vnode.el)
vnode.transition!.beforeEnter(vnode.el!)
state.show = true
vnode.transition!.enter(vnode.el)
vnode.transition!.enter(vnode.el!)
} else {
vnode.transition!.leave(vnode.el, () => {
vnode.transition!.leave(vnode.el!, () => {
state.show = false
})
}

View File

@@ -19,7 +19,9 @@ function mountWithHydration(html: string, render: () => any) {
render
})
return {
vnode: app.mount(container).$.subTree,
vnode: app.mount(container).$.subTree as VNode<Node, Element> & {
el: Element
},
container
}
}
@@ -90,7 +92,7 @@ describe('SSR hydration', () => {
)
// event handler
triggerEvent('click', vnode.el.querySelector('.foo'))
triggerEvent('click', vnode.el.querySelector('.foo')!)
expect(fn).toHaveBeenCalled()
msg.value = 'bar'
@@ -120,7 +122,7 @@ describe('SSR hydration', () => {
const fragment1Children = fragment1.children as VNode[]
// first <span>
expect(fragment1Children[0].el.tagName).toBe('SPAN')
expect(fragment1Children[0].el!.tagName).toBe('SPAN')
expect(fragment1Children[0].el).toBe(vnode.el.childNodes[1])
// start fragment 2
@@ -129,7 +131,7 @@ describe('SSR hydration', () => {
const fragment2Children = fragment2.children as VNode[]
// second <span>
expect(fragment2Children[0].el.tagName).toBe('SPAN')
expect(fragment2Children[0].el!.tagName).toBe('SPAN')
expect(fragment2Children[0].el).toBe(vnode.el.childNodes[3])
// end fragment 2
@@ -139,7 +141,7 @@ describe('SSR hydration', () => {
expect(fragment1.anchor).toBe(vnode.el.childNodes[5])
// event handler
triggerEvent('click', vnode.el.querySelector('.foo'))
triggerEvent('click', vnode.el.querySelector('.foo')!)
expect(fn).toHaveBeenCalled()
msg.value = 'bar'