This commit is contained in:
@@ -340,28 +340,27 @@ export namespace Memoized {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const memo = <T extends Component<any, any, any>>(
|
export const memo = <T extends Component<any, any, any> | Component<any, any, any> & Memoized<any>>(
|
||||||
self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>
|
self: T
|
||||||
): T & Memoized<Component.Props<T>> => Object.setPrototypeOf(
|
): T & Memoized<Component.Props<T>> => Object.setPrototypeOf({
|
||||||
{ ...self, memo: true, memoOptions: {} },
|
...self,
|
||||||
Object.getPrototypeOf(self),
|
memo: true,
|
||||||
)
|
memoOptions: Predicate.hasProperty(self, "memo") ? { ...self.memoOptions } : {},
|
||||||
|
}, Object.getPrototypeOf(self))
|
||||||
|
|
||||||
export const memoWithOptions: {
|
export const withMemoOptions: {
|
||||||
<T extends Component<any, any, any>>(
|
<T extends Component<any, any, any> & Memoized<any>>(
|
||||||
memoOptions: Partial<Memoized.Options<Component.Props<T>>>
|
memoOptions: Partial<Memoized.Options<Component.Props<T>>>
|
||||||
): (
|
): (self: T) => T
|
||||||
self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>
|
<T extends Component<any, any, any> & Memoized<any>>(
|
||||||
) => T & Memoized<Component.Props<T>>
|
self: T,
|
||||||
<T extends Component<any, any, any>>(
|
|
||||||
self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>,
|
|
||||||
memoOptions: Partial<Memoized.Options<Component.Props<T>>>,
|
memoOptions: Partial<Memoized.Options<Component.Props<T>>>,
|
||||||
): T & Memoized<Component.Props<T>>
|
): T
|
||||||
} = Function.dual(2, <T extends Component<any, any, any>>(
|
} = Function.dual(2, <T extends Component<any, any, any> & Memoized<any>>(
|
||||||
self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>,
|
self: T,
|
||||||
memoOptions: Partial<Memoized.Options<Component.Props<T>>>,
|
memoOptions: Partial<Memoized.Options<Component.Props<T>>>,
|
||||||
): T & Memoized<Component.Props<T>> => Object.setPrototypeOf(
|
): T => Object.setPrototypeOf(
|
||||||
{ ...self, memo: true, memoOptions },
|
{ ...self, memoOptions: { ...self.memoOptions, ...memoOptions } },
|
||||||
Object.getPrototypeOf(self),
|
Object.getPrototypeOf(self),
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user