memoWithOptions
All checks were successful
Lint / lint (push) Successful in 13s

This commit is contained in:
Julien Valverdé
2025-07-21 01:24:14 +02:00
parent 605c0f9d57
commit c9df6e7a88

View File

@@ -370,21 +370,21 @@ export const memo = <T extends Component<any, any, any>>(
Object.getPrototypeOf(self), Object.getPrototypeOf(self),
) )
export const memoWithEquivalence: { export const memoWithOptions: {
<T extends Component<any, any, any>>( <T extends Component<any, any, any>>(
propsAreEqual: Equivalence.Equivalence<Component.Props<T>> memoOptions: Partial<Memoized.Options<Component.Props<T>>>
): ( ): (
self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>> self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>
) => T & Memoized<Component.Props<T>> ) => T & Memoized<Component.Props<T>>
<T extends Component<any, any, any>>( <T extends Component<any, any, any>>(
self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>, self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>,
propsAreEqual: Equivalence.Equivalence<Component.Props<T>>, memoOptions: Partial<Memoized.Options<Component.Props<T>>>,
): T & Memoized<Component.Props<T>> ): T & Memoized<Component.Props<T>>
} = Function.dual(2, <T extends Component<any, any, any>>( } = Function.dual(2, <T extends Component<any, any, any>>(
self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>, self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>,
propsAreEqual: Equivalence.Equivalence<Component.Props<T>>, memoOptions: Partial<Memoized.Options<Component.Props<T>>>,
): T & Memoized<Component.Props<T>> => Object.setPrototypeOf( ): T & Memoized<Component.Props<T>> => Object.setPrototypeOf(
{ ...self, memo: true, memoOptions: { propsAreEqual } }, { ...self, memo: true, memoOptions },
Object.getPrototypeOf(self), Object.getPrototypeOf(self),
)) ))