@ngneers/easy-ngrx-distinct-selector
Version:
Provides functions to easily create @ngrx/store selectors with equal functions for arguments and result values.
15 lines (14 loc) • 940 B
TypeScript
import { MemoizedProjection } from '@ngrx/store';
import { EqualsFn } from './is-equal';
export type TypedMemoizedProjection<TArgs extends unknown[] = unknown[], TResult = unknown> = MemoizedProjection & {
memoized: (...args: TArgs) => TResult;
setResult: (result?: TResult) => void;
};
/**
* Uses the same logic as the `defaultMemoize` function from `@ngrx/store`.
* The difference is that the `isArgumentsEqual` function is now called only once with the previous and current arguments instead of once for each argument.
* This enables us to write better TypeScript types for the `isArgumentsEqual` function.
*
* @see https://ngrx.io/api/store/defaultMemoize
*/
export declare function typeFriendlyDefaultMemoize<TArgs extends unknown[] = unknown[], TResult = unknown>(projectionFn: (...args: TArgs) => TResult, isArgumentsEqual?: EqualsFn<TArgs>, isResultEqual?: EqualsFn<TResult>): TypedMemoizedProjection<TArgs, TResult>;