From: Cédric Exbrayat Date: Fri, 12 Jun 2020 14:38:56 +0000 (+0200) Subject: fix(types): add RawSlots in h signature (#1293) X-Git-Tag: v3.0.0-beta.15~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cab769f174f4c0bcad59454e4a77039830e796f8;p=thirdparty%2Fvuejs%2Fcore.git fix(types): add RawSlots in h signature (#1293) --- diff --git a/packages/runtime-core/__tests__/h.spec.ts b/packages/runtime-core/__tests__/h.spec.ts index b55c9f4820..1e1c6fb8d8 100644 --- a/packages/runtime-core/__tests__/h.spec.ts +++ b/packages/runtime-core/__tests__/h.spec.ts @@ -1,5 +1,6 @@ import { h } from '../src/h' import { createVNode } from '../src/vnode' +import { RawSlots } from '../src/componentSlots' // Since h is a thin layer on top of createVNode, we are only testing its // own logic here. Details of vnode creation is tested in vnode.spec.ts. @@ -31,8 +32,14 @@ describe('renderer: h', () => { test('type + props + children', () => { // array expect(h('div', {}, ['foo'])).toMatchObject(createVNode('div', {}, ['foo'])) - // default slot + // slots + const slots = {} as RawSlots + expect(h('div', {}, slots)).toMatchObject(createVNode('div', {}, slots)) const Component = { template: '
' } + expect(h(Component, {}, slots)).toMatchObject( + createVNode(Component, {}, slots) + ) + // default slot const slot = () => {} expect(h(Component, {}, slot)).toMatchObject( createVNode(Component, {}, slot) diff --git a/packages/runtime-core/src/h.ts b/packages/runtime-core/src/h.ts index 4e644c3e05..2b5d8c54e1 100644 --- a/packages/runtime-core/src/h.ts +++ b/packages/runtime-core/src/h.ts @@ -80,7 +80,7 @@ export function h(type: string, children?: RawChildren): VNode export function h( type: string, props?: RawProps | null, - children?: RawChildren + children?: RawChildren | RawSlots ): VNode // fragment diff --git a/test-dts/h.test-d.ts b/test-dts/h.test-d.ts index 7f7ec3c35e..0b7687536d 100644 --- a/test-dts/h.test-d.ts +++ b/test-dts/h.test-d.ts @@ -29,6 +29,9 @@ describe('h inference w/ element', () => { expectError(h('div', { ref: {} })) // @ts-expect-error expectError(h('div', { ref: 123 })) + // slots + const slots = { default: () => {} } // RawSlots + h('div', {}, slots) }) describe('h inference w/ Fragment', () => {