浏览代码

fix(types): add RawSlots in h signature (#1293)

Cédric Exbrayat 5 年之前
父节点
当前提交
cab769f174
共有 3 个文件被更改,包括 12 次插入2 次删除
  1. 8 1
      packages/runtime-core/__tests__/h.spec.ts
  2. 1 1
      packages/runtime-core/src/h.ts
  3. 3 0
      test-dts/h.test-d.ts

+ 8 - 1
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: '<br />' }
+    expect(h(Component, {}, slots)).toMatchObject(
+      createVNode(Component, {}, slots)
+    )
+    // default slot
     const slot = () => {}
     expect(h(Component, {}, slot)).toMatchObject(
       createVNode(Component, {}, slot)

+ 1 - 1
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

+ 3 - 0
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', () => {