diff --git a/packages/effect-fc/src/Component.ts b/packages/effect-fc/src/Component.ts index a297b89..ab56dfa 100644 --- a/packages/effect-fc/src/Component.ts +++ b/packages/effect-fc/src/Component.ts @@ -90,13 +90,15 @@ export interface Memoized

{ export const memo: { >( propsAreEqual?: Equivalence.Equivalence> - ): (self: T) => T & Memoized> + ): ( + self: ExcludeKeys>> + ) => T & Memoized> >( - self: T, + self: ExcludeKeys>>, propsAreEqual?: Equivalence.Equivalence>, ): T & Memoized> } = Function.dual(2, >( - self: T, + self: ExcludeKeys>>, propsAreEqual?: Equivalence.Equivalence>, ): T & Memoized> => Object.assign( Object.create(Object.getPrototypeOf(self)), diff --git a/packages/example/src/todo/Todo.tsx b/packages/example/src/todo/Todo.tsx index b7d1746..3a2495f 100644 --- a/packages/example/src/todo/Todo.tsx +++ b/packages/example/src/todo/Todo.tsx @@ -113,3 +113,4 @@ export const Todo = Component.make(function* Todo(props: TodoProps) { }) const MemoizedTodo = Component.memo(Todo) +const MemoizedTodo2 = Component.memo(MemoizedTodo)