From f419474536cc702c18df8ded25baae8b3a54c8cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Mon, 14 Jul 2025 21:12:54 +0200 Subject: [PATCH] Fix --- packages/effect-fc/src/Component.ts | 15 +++++++++++---- packages/example/src/routes/dev/memo.tsx | 3 +-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/effect-fc/src/Component.ts b/packages/effect-fc/src/Component.ts index 482b227..af91d9a 100644 --- a/packages/effect-fc/src/Component.ts +++ b/packages/effect-fc/src/Component.ts @@ -87,19 +87,26 @@ export interface Memoized

{ readonly propsAreEqual?: Equivalence.Equivalence

} -export const memo: { +export const memo = >( + self: ExcludeKeys>> +): T & Memoized> => Object.setPrototypeOf( + { ...self, memo: true }, + Object.getPrototypeOf(self), +) + +export const memoWithEquivalence: { >( - propsAreEqual?: Equivalence.Equivalence> + propsAreEqual: Equivalence.Equivalence> ): ( self: ExcludeKeys>> ) => T & Memoized> >( self: ExcludeKeys>>, - propsAreEqual?: Equivalence.Equivalence>, + propsAreEqual: Equivalence.Equivalence>, ): T & Memoized> } = Function.dual(2, >( self: ExcludeKeys>>, - propsAreEqual?: Equivalence.Equivalence>, + propsAreEqual: Equivalence.Equivalence>, ): T & Memoized> => Object.setPrototypeOf( { ...self, memo: true, propsAreEqual }, Object.getPrototypeOf(self), diff --git a/packages/example/src/routes/dev/memo.tsx b/packages/example/src/routes/dev/memo.tsx index adeb13d..f58e6ad 100644 --- a/packages/example/src/routes/dev/memo.tsx +++ b/packages/example/src/routes/dev/memo.tsx @@ -33,8 +33,7 @@ const SubComponent = Component.make(function* SubComponent() { return {id} }) -const MemoizedSubComponent = Component.memo()(SubComponent) -console.log(MemoizedSubComponent.memo) +const MemoizedSubComponent = Component.memo(SubComponent) export const Route = createFileRoute("/dev/memo")({ component: RouteComponent,