Skip to content

Commit f908ae2

Browse files
committed
refactor: style
1 parent 90814c8 commit f908ae2

File tree

7 files changed

+23
-26
lines changed

7 files changed

+23
-26
lines changed

packages/dts-test/defineComponent.test-d.tsx

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1411,20 +1411,17 @@ export default {
14111411
describe('slots', () => {
14121412
defineComponent({
14131413
slots: Object as SlotsType<{
1414-
default: [foo: string, bar: number]
1415-
item: [number]
1414+
default: { foo: string; bar: number }
1415+
item: { data: number }
14161416
}>,
14171417
setup(props, { slots }) {
1418-
expectType<undefined | ((foo: string, bar: number) => any)>(slots.default)
1419-
expectType<undefined | ((scope: number) => any)>(slots.item)
1418+
expectType<undefined | ((scope: { foo: string; bar: number }) => any)>(
1419+
slots.default
1420+
)
1421+
expectType<undefined | ((scope: { data: number }) => any)>(slots.item)
14201422
}
14211423
})
14221424

1423-
defineComponent({
1424-
// @ts-expect-error `default` should be an array
1425-
slots: Object as SlotsType<{ default: string }>
1426-
})
1427-
14281425
defineComponent({
14291426
setup(props, { slots }) {
14301427
// unknown slots

packages/dts-test/functionalComponent.test-d.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,13 @@ const Qux: FunctionalComponent<{}, ['foo', 'bar']> = (props, { emit }) => {
6969

7070
expectType<Component>(Qux)
7171

72-
const Quux: FunctionalComponent<{}, {}, { default: [foo: number] }> = (
72+
const Quux: FunctionalComponent<{}, {}, { default: { foo: number } }> = (
7373
props,
7474
{ emit, slots }
7575
) => {
76-
expectType<{ default: undefined | ((foo: number) => VNode[]) }>(slots)
76+
expectType<{ default: undefined | ((scope: { foo: number }) => VNode[]) }>(
77+
slots
78+
)
7779
}
7880
expectType<Component>(Quux)
7981
;<Quux />

packages/dts-test/setupHelpers.test-d.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -183,15 +183,12 @@ describe('defineEmits w/ runtime declaration', () => {
183183

184184
describe('defineSlots', () => {
185185
const slots = defineSlots<{
186-
default: [foo: string, bar: number]
186+
default: { foo: string; bar: number }
187187
}>()
188-
expectType<(foo: string, bar: number) => VNode[]>(slots.default)
188+
expectType<(scope: { foo: string; bar: number }) => VNode[]>(slots.default)
189189

190190
const slotsUntype = defineSlots()
191191
expectType<Slots>(slotsUntype)
192-
193-
// @ts-expect-error `default` should be an array
194-
defineSlots<{ default: string }>()
195192
})
196193

197194
describe('useAttrs', () => {

packages/runtime-core/src/apiSetupHelpers.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,10 +190,10 @@ export function defineOptions<
190190
}
191191

192192
export function defineSlots<
193-
T extends Record<string, any[]> = Record<string, any[]>
193+
T extends Record<string, any> = Record<string, any>
194194
>(): // @ts-expect-error
195195
Readonly<{
196-
[K in keyof T]: Slot<T[K]>
196+
[K in keyof T]: Slot<[T[K]]>
197197
}> {
198198
if (__DEV__) {
199199
warnRuntimeUsage(`defineSlots`)

packages/runtime-core/src/component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ export interface ComponentInternalOptions {
125125
export interface FunctionalComponent<
126126
P = {},
127127
E extends EmitsOptions = {},
128-
S extends Record<string, any[]> = Record<string, any[]>
128+
S extends Record<string, any> = Record<string, any>
129129
> extends ComponentInternalOptions {
130130
// use of any here is intentional so it can be a valid JSX Element constructor
131131
(props: P, ctx: Omit<SetupContext<E, SlotsType<S>>, 'expose'>): any

packages/runtime-core/src/componentSlots.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ import { isHmrUpdating } from './hmr'
2323
import { DeprecationTypes, isCompatEnabled } from './compat/compatConfig'
2424
import { toRaw } from '@vue/reactivity'
2525

26-
export type Slot<T extends any[] = any[]> = (...args: T) => VNode[]
26+
export type Slot<T extends any[] = any[]> = (
27+
...args: T extends [any] ? any[] : T
28+
) => VNode[]
2729

2830
export type InternalSlots = {
2931
[name: string]: Slot | undefined
@@ -32,17 +34,16 @@ export type InternalSlots = {
3234
export type Slots = Readonly<InternalSlots>
3335

3436
declare const SlotSymbol: unique symbol
35-
export type SlotsType<T extends Record<string, any[]> = Record<string, any[]>> =
36-
{
37-
[SlotSymbol]?: T
38-
}
37+
export type SlotsType<T extends Record<string, any> = Record<string, any>> = {
38+
[SlotSymbol]?: T
39+
}
3940

4041
export type TypedSlots<S extends SlotsType> = [keyof S] extends [never]
4142
? Slots
4243
: Readonly<
4344
Prettify<{
4445
[K in keyof NonNullable<S[typeof SlotSymbol]>]:
45-
| Slot<NonNullable<S[typeof SlotSymbol]>[K]>
46+
| Slot<[NonNullable<S[typeof SlotSymbol]>[K]]>
4647
| undefined
4748
}>
4849
>

packages/runtime-core/src/h.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ export function h(
123123
export function h<
124124
P,
125125
E extends EmitsOptions = {},
126-
S extends Record<string, any[]> = {}
126+
S extends Record<string, any> = {}
127127
>(
128128
type: FunctionalComponent<P, E, S>,
129129
props?: (RawProps & P) | ({} extends P ? null : never),

0 commit comments

Comments
 (0)