Skip to content

Commit

Permalink
chore: use stricter slots type in createSlots
Browse files Browse the repository at this point in the history
  • Loading branch information
yyx990803 committed Sep 28, 2022
1 parent 05c7b0d commit cae1aa8
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions packages/runtime-core/src/helpers/createSlots.ts
@@ -1,9 +1,12 @@
import { Slot } from '../componentSlots'
import { isArray } from '@vue/shared'
import { VNode } from '../vnode'

// #6651 res can be undefined in SSR in string push mode
type SSRSlot = (...args: any[]) => VNode[] | undefined

interface CompiledSlotDescriptor {
name: string
fn: Slot
fn: SSRSlot
key?: string
}

Expand All @@ -12,13 +15,13 @@ interface CompiledSlotDescriptor {
* @private
*/
export function createSlots(
slots: Record<string, Slot>,
slots: Record<string, SSRSlot>,
dynamicSlots: (
| CompiledSlotDescriptor
| CompiledSlotDescriptor[]
| undefined
)[]
): Record<string, Slot> {
): Record<string, SSRSlot> {
for (let i = 0; i < dynamicSlots.length; i++) {
const slot = dynamicSlots[i]
// array of dynamic slot generated by <template v-for="..." #[...]>
Expand All @@ -33,7 +36,6 @@ export function createSlots(
const res = slot.fn(...args)
// attach branch key so each conditional branch is considered a
// different fragment
// #6651 res can be undefined in SSR in string push mode
if (res) (res as any).key = slot.key
return res
}
Expand Down

0 comments on commit cae1aa8

Please sign in to comment.