fix: adjust order of `derived` function definition overloads

Turns out the order is crucial for not getting a type error
fixes #11415
pull/11426/head
Simon Holthausen 2 years ago
parent fcdad4c166
commit 44f23d2ccf

@ -0,0 +1,5 @@
---
"svelte": patch
---
fix: adjust order of `derived` function definition overloads

@ -111,7 +111,7 @@ export function writable(value, start = noop) {
* @template T
* @overload
* @param {S} stores
* @param {(values: import('./private.js').StoresValues<S>) => T} fn
* @param {(values: import('./private.js').StoresValues<S>, set: (value: T) => void, update: (fn: import('./public.js').Updater<T>) => void) => import('./public.js').Unsubscriber | void} fn
* @param {T} [initial_value]
* @returns {import('./public.js').Readable<T>}
*/
@ -124,7 +124,7 @@ export function writable(value, start = noop) {
* @template T
* @overload
* @param {S} stores
* @param {(values: import('./private.js').StoresValues<S>, set: (value: T) => void, update: (fn: import('./public.js').Updater<T>) => void) => import('./public.js').Unsubscriber | void} fn
* @param {(values: import('./private.js').StoresValues<S>) => T} fn
* @param {T} [initial_value]
* @returns {import('./public.js').Readable<T>}
*/

@ -11,3 +11,17 @@ derived([a], ([aVal]) => {
aVal === '';
return aVal === true;
});
derived(
a,
(value, set) => {
set('works');
// @ts-expect-error
set(true);
value === true;
// @ts-expect-error
value === '';
},
''
);

@ -2157,14 +2157,14 @@ declare module 'svelte/store' {
*
* https://svelte.dev/docs/svelte-store#derived
* */
export function derived<S extends Stores, T>(stores: S, fn: (values: StoresValues<S>) => T, initial_value?: T | undefined): Readable<T>;
export function derived<S extends Stores, T>(stores: S, fn: (values: StoresValues<S>, set: (value: T) => void, update: (fn: Updater<T>) => void) => Unsubscriber | void, initial_value?: T | undefined): Readable<T>;
/**
* Derived value store by synchronizing one or more readable stores and
* applying an aggregation function over its input values.
*
* https://svelte.dev/docs/svelte-store#derived
* */
export function derived<S extends Stores, T>(stores: S, fn: (values: StoresValues<S>, set: (value: T) => void, update: (fn: Updater<T>) => void) => Unsubscriber | void, initial_value?: T | undefined): Readable<T>;
export function derived<S extends Stores, T>(stores: S, fn: (values: StoresValues<S>) => T, initial_value?: T | undefined): Readable<T>;
/**
* Takes a store and returns a new one derived from the old one that is readable.
*

Loading…
Cancel
Save