chore: use stricter slots type in createSlots

This commit is contained in:
Evan You 2022-09-28 10:38:19 +08:00
parent 05c7b0d180
commit cae1aa82cc
1 changed files with 7 additions and 5 deletions

View File

@ -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
}
@ -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="..." #[...]>
@ -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
}