diff --git a/packages/solid/src/reactive/signal.ts b/packages/solid/src/reactive/signal.ts index ab8948cf..5dffc67e 100644 --- a/packages/solid/src/reactive/signal.ts +++ b/packages/solid/src/reactive/signal.ts @@ -179,12 +179,12 @@ export function createRoot(fn: RootFunction, detachedOwner?: typeof Owner) export type Accessor = () => T; export type Setter = { + (value: Exclude | ((prev: T) => U)): U; ( ...args: undefined extends T ? [] : [value: Exclude | ((prev: T) => U)] ): undefined extends T ? undefined : U; (value: (prev: T) => U): U; (value: Exclude): U; - (value: Exclude | ((prev: T) => U)): U; }; export type Signal = [get: Accessor, set: Setter]; diff --git a/packages/solid/test/signals.type-tests.ts b/packages/solid/test/signals.type-tests.ts index 432f853b..b3ffa430 100644 --- a/packages/solid/test/signals.type-tests.ts +++ b/packages/solid/test/signals.type-tests.ts @@ -887,11 +887,13 @@ interface KobalteBaseSelectProps { interface KobaltSingleSelectProps { value?: T | null; onChange?: (value: T) => void; + multiple?: false; } interface KobaltMultiSelectProps { value?: T[]; onChange?: (value: T[]) => void; + multiple?: true; } type KobaltSelectProps = ( @@ -903,8 +905,15 @@ type KobaltSelectProps = ( type fruits = "apple" | "banana" | "orange"; const fruits: fruits[] = ["apple", "banana", "orange"]; const [fruit, setFruit] = createSignal("apple"); +const [fruitArr, setFruitArr] = createSignal(["apple"]); function kobalteSelect(props: KobaltSelectProps) {} kobalteSelect({ value: fruit(), onChange: setFruit, options: fruits }); +kobalteSelect({ + value: fruitArr(), + onChange: setFruitArr, + options: fruits, + multiple: true +}); ////////////////////////////////////////////////////////////////////////// // test explicit generic args ////////////////////////////////////////////