#Weird behaviour with return type of function intersection

3 messages · Page 1 of 1 (latest)

rancid gyro
#

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
solemn islandBOT
#
bennie#5947

Preview:```ts
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
...```

bitter raven