(fn: T)
| 1 | import shallowEqual from "./shallowEqual"; |
| 2 | |
| 3 | const memoize = <T extends (...args: any[]) => any>(fn: T): T => { |
| 4 | let lastArgs: any[] | undefined; |
| 5 | let lastResult: any; |
| 6 | return ((...args: any[]) => { |
| 7 | if ( |
| 8 | !lastArgs || |
| 9 | args.length !== lastArgs.length || |
| 10 | args.some((arg, index) => !shallowEqual(lastArgs![index], arg)) |
| 11 | ) { |
| 12 | lastArgs = args; |
| 13 | lastResult = fn(...args); |
| 14 | } |
| 15 | return lastResult; |
| 16 | }) as T; |
| 17 | }; |
| 18 | |
| 19 | export default memoize; |
no test coverage detected
searching dependent graphs…