type Bar‹T› = T extends { a: (x: infer U) => void, b: (x: infer U) => void } ? U : never; type T20 = Bar‹{ a: (x: string) => void, b: (x: string) =› void }›; // string type T21 = Bar‹{ a: (x: string) => void, b: (x: number) =› void }›; // string & number