Consider the following
type MergeFn = <K1 extends string, V1, K2 extends string, V2>(
k1: K1, v1: V1,
k2: K2, v2: V2
) => ???
let mergeFn: MergeFn // implementation not relevant to question
What would I have to fill in for ???
so that
mergeFn(
"hello", 1,
"typescript", 2
)
has type { hello: number, typescript: number }
.
I tried
??? = { [k in K1]: V1 } & { [k in K2]: V2 }
but the result will be
{ hello: number } & { typescript: number }
.
(Applying type Id<T> = { [k in keyof T]: T[k] }
as proposed here did not help either.)