diff --git a/types/memoize-one/index.d.ts b/types/memoize-one/index.d.ts index 71f785e73c..e8ec195875 100644 --- a/types/memoize-one/index.d.ts +++ b/types/memoize-one/index.d.ts @@ -1,9 +1,9 @@ -// Type definitions for memoize-one 3.1 +// Type definitions for memoize-one 4.1 // Project: https://github.com/alexreardon/memoize-one#readme // Definitions by: Karol Majewski , Frank Li // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare function memoizeOne any>(resultFn: T, isEqual?: EqualityFn): T; -export type EqualityFn = (a: any, b: any) => boolean; +export type EqualityFn = (a: any, b: any, index: number) => boolean; export default memoizeOne; diff --git a/types/memoize-one/memoize-one-tests.ts b/types/memoize-one/memoize-one-tests.ts index 4feddf6e57..a9c565b500 100644 --- a/types/memoize-one/memoize-one-tests.ts +++ b/types/memoize-one/memoize-one-tests.ts @@ -3,6 +3,7 @@ import memoizeOne, { EqualityFn } from 'memoize-one'; declare function add(a: number, b: number): number ; declare function lousyEqualityFn(a: any, b: any): boolean; declare function strictEqualityFn(a: T, b: T): boolean; +declare function equalityFnWithIndex(a: T, b: T, index: number): boolean; /** * Accepts a second argument. @@ -10,17 +11,18 @@ declare function strictEqualityFn(a: T, b: T): boolean; memoizeOne(add); // $ExpectType (a: number, b: number) => number memoizeOne(add, lousyEqualityFn); // $ExpectType (a: number, b: number) => number memoizeOne(add, strictEqualityFn); // $ExpectType (a: number, b: number) => number +memoizeOne(add, equalityFnWithIndex); // $ExpectType (a: number, b: number) => number /** - * The second argument can be, but doesn't have to be stritly typed. + * The second argument can be, but doesn't have to be strictly typed. */ memoizeOne(add, (a, b) => a === b); // $ExpectType (a: number, b: number) => number memoizeOne(add, (a: string, b: string) => a === b); // $ExpectType (a: number, b: number) => number /** - * Function passed as the second argument accepts exactly two arguments. + * Function passed as the second argument accepts no more than three arguments. */ -memoizeOne(add, (a: number, b: number, c: number) => a === b || c); // $ExpectError +memoizeOne(add, (a: number, b: number, c: number, d: number) => Boolean(a && b && c && d)); // $ExpectError /** * Function passed as the second argument returns a boolean.