Can anyone help me understand the differences in types in this code?
type FN1 = () => string | number
type FN2 = () => number
type R1 = ReturnType<FN1 & FN2> // number
type R2 = ReturnType<FN2 & FN1> // string | number
const res1 = (undefined as unknown as (FN1 & FN2))() // string | number
const res2 = (undefined as unknown as (FN2 & FN1))() // number