0.1.0 #1

Merged
Thilawyn merged 81 commits from next into master 2025-07-17 21:17:57 +02:00
2 changed files with 6 additions and 3 deletions
Showing only changes of commit 0a5dac5f34 - Show all commits

View File

@@ -90,13 +90,15 @@ export interface Memoized<P> {
export const memo: { export const memo: {
<T extends Component<any, any, any>>( <T extends Component<any, any, any>>(
propsAreEqual?: Equivalence.Equivalence<Component.Props<T>> propsAreEqual?: Equivalence.Equivalence<Component.Props<T>>
): (self: T) => T & Memoized<Component.Props<T>> ): (
self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>
) => T & Memoized<Component.Props<T>>
<T extends Component<any, any, any>>( <T extends Component<any, any, any>>(
self: T, self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>,
propsAreEqual?: Equivalence.Equivalence<Component.Props<T>>, propsAreEqual?: Equivalence.Equivalence<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: T, self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>,
propsAreEqual?: Equivalence.Equivalence<Component.Props<T>>, propsAreEqual?: Equivalence.Equivalence<Component.Props<T>>,
): T & Memoized<Component.Props<T>> => Object.assign( ): T & Memoized<Component.Props<T>> => Object.assign(
Object.create(Object.getPrototypeOf(self)), Object.create(Object.getPrototypeOf(self)),

View File

@@ -113,3 +113,4 @@ export const Todo = Component.make(function* Todo(props: TodoProps) {
}) })
const MemoizedTodo = Component.memo(Todo) const MemoizedTodo = Component.memo(Todo)
const MemoizedTodo2 = Component.memo(MemoizedTodo)