The following code is running normally.
function test<T extends object, K extends keyof T, P extends (v: T[K]) => any>(
item: T,
key: K,
transform: P
): ReturnType<P> {
return transform(item[key])
}
but when I set a default function to param transform
it errors
function test<T extends object, K extends keyof T, P extends (v: T[K]) => any>(
item: T,
key: K,
transform: P = v => v
): ReturnType<P> {
return transform(item[key])
}
Type '(v: T[K]) => T[K]' is not assignable to type 'P'. '(v: T[K]) => T[K]' is assignable to the constraint of type 'P', but 'P' could be instantiated with a different subtype of constraint '(v: T[K]) => any'.
how can I modify this code to run it normally with default method v => v