type FuncsIntr = (() => 1) & (() => 2) & (() => 3);
type RetIntr = ReturnType<FuncsIntr>; // 3
type FuncsUn = (() => 1) | (() => 2) | (() => 3);
type RetUn = ReturnType<FuncsUn>; // 1 | 2 | 3
type FuncsObjr = (() => ({ prop: string, name: string })) & (() => ({ prop: string, name: number }));
const test: ReturnType<FuncsObjr> = { prop: '', name: '' }; // Error: Type 'string' is not assignable to type 'number'.(2322)