diff --git a/packages/solid/src/reactive/signal.ts b/packages/solid/src/reactive/signal.ts index 521145114..743d3658c 100644 --- a/packages/solid/src/reactive/signal.ts +++ b/packages/solid/src/reactive/signal.ts @@ -5,8 +5,8 @@ import type { JSX } from "../jsx"; export type Accessor = () => T; export type Setter = undefined extends T - ? (v?: (U extends Function ? never : U) | ((prev?: U) => U)) => U - : (v: (U extends Function ? never : U) | ((prev: U) => U)) => U; + ? (v?: (U extends Function ? never : U) | ((prev?: T) => U)) => U + : (v: (U extends Function ? never : U) | ((prev: T) => U)) => U; export const equalFn = (a: T, b: T) => a === b; export const $PROXY = Symbol("solid-proxy"); const signalOptions = { equals: equalFn }; @@ -166,8 +166,8 @@ export function createSignal( ((value: T extends Function ? never : T | ((p?: T) => T)) => { if (typeof value === "function") { if (Transition && Transition.running && Transition.sources.has(s)) - value = value(s.pending !== NOTPENDING ? (s.pending as T) : s.tValue); - else value = value(s.pending !== NOTPENDING ? (s.pending as T) : s.value); + value = value(s.pending !== NOTPENDING ? s.pending : s.tValue); + else value = value(s.pending !== NOTPENDING ? s.pending : s.value); } return writeSignal(s, value); }) as Setter