1.  
  2. type FooT = T extends { a: infer U, b: infer U } ? U : never;
  3. type T10 = Foo<{ a: string, b: string }>; // string
  4. type T11 = Foo<{ a: string, b: number }>; // string | number
  5.