diff --git a/packages/svelte/src/internal/client/reactivity/sources.js b/packages/svelte/src/internal/client/reactivity/sources.js index 632fbe1690..9aef3e5663 100644 --- a/packages/svelte/src/internal/client/reactivity/sources.js +++ b/packages/svelte/src/internal/client/reactivity/sources.js @@ -47,11 +47,14 @@ export function source(v) { } /** - * @param {() => any} get_value + * @template V + * @param {() => V} get_value + * @returns {(value?: V) => V} */ export function source_link(get_value) { var was_local = false; var local_source = source(undefined); + var linked_derived = derived(() => { var local_value = get(local_source); var linked_value = get_value(); @@ -65,14 +68,14 @@ export function source_link(get_value) { }); return function (/** @type {any} */ value) { - var linked_value = get(linked_derived); if (arguments.length > 0) { was_local = true; set(local_source, value); get(linked_derived); return value; } - return linked_value; + + return get(linked_derived); }; }