Skip to content

Commit

Permalink
Improve on types
Browse files Browse the repository at this point in the history
  • Loading branch information
ryansolid committed Jul 15, 2021
1 parent 85fe17b commit 50fb34a
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions packages/solid/src/reactive/signal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -477,17 +477,17 @@ export function on<T extends (() => any)[], U>(
deps: [...T],
fn: (input: ReturnTypes<T>, prevInput: ReturnTypes<T>, prevValue?: U) => U,
options?: { defer?: boolean }
): (prevValue?: U) => U | undefined;
): (prevValue?: U) => U;
export function on<T extends () => any, U>(
deps: T,
fn: (input: ReturnType<T>, prevInput: ReturnType<T>, prevValue?: U) => U,
options?: { defer?: boolean }
): (prevValue?: U) => U | undefined;
): (prevValue?: U) => U;
export function on<T extends (() => any) | (() => any)[], U>(
deps: T,
fn: (input: ReturnTypes<T>, prevInput: ReturnTypes<T>, prevValue?: U) => U,
options?: { defer?: boolean }
): (prevValue?: U) => U | undefined {
): (prevValue?: U) => U {
const isArray = Array.isArray(deps);
let prevInput: ReturnTypes<T>;
let defer = options && options.defer;
Expand All @@ -499,7 +499,8 @@ export function on<T extends (() => any) | (() => any)[], U>(
} else input = (deps as () => T)() as any;
if (defer) {
defer = false;
return undefined;
// this aspect of first run on deferred is hidden from end user and should not affect types
return undefined as unknown as U;
}
const result = untrack<U>(() => fn!(input, prevInput, prevValue));
prevInput = input;
Expand Down

0 comments on commit 50fb34a

Please sign in to comment.