fix(types): accept generic Component type in h()

fix #922
This commit is contained in:
Evan You
2020-04-04 13:29:29 -04:00
parent 5dcc645fc0
commit c1d5928f3b
2 changed files with 19 additions and 24 deletions

View File

@@ -6,7 +6,8 @@ import {
ref,
Fragment,
Teleport,
Suspense
Suspense,
Component
} from './index'
describe('h inference w/ element', () => {
@@ -58,17 +59,15 @@ describe('h inference w/ functional component', () => {
expectError(h(Func, { bar: 123 }))
})
describe('h inference w/ plain object component', () => {
describe('h support w/ plain object component', () => {
const Foo = {
props: {
foo: String
}
}
h(Foo, { foo: 'ok' })
h(Foo, { foo: 'ok', class: 'extra' })
// should fail on wrong type
expectError(h(Foo, { foo: 1 }))
// no inference in this case
})
describe('h inference w/ defineComponent', () => {
@@ -122,3 +121,13 @@ describe('h inference w/ defineComponent + direct function', () => {
// should fail on wrong type
expectError(h(Foo, { bar: 1, foo: 1 }))
})
// #922
describe('h support for generic component type', () => {
function foo(bar: Component) {
h(bar)
h(bar, 'hello')
h(bar, { id: 'ok' }, 'hello')
}
foo({})
})