```ts const f = <F extends (...args: any[]) => <G>(x: G) => void>(_: F): F => _ const a = f(<K extends string>(_: K) => _ => ({})) /* in 3.8.2 (_: K) => <G>(_: G) => {}; */ /* in 3.7.5 <K extends string>(_: K) => <G>(_: G) => {}; */ ``` **Expected behavior:** To be like in 3.7.5 **Actual behavior:** K is lost Buggy: [Playground Link](https://www.typescriptlang.org/play/?ssl=1&ssc=1&pln=5&pc=8#code/MYewdgzgLgBAZjAvDAPAMRgUwB5U2AEwhgAoA6CgQwCcBzCALhkrAE8BtAXQEokA+VAHE+JbE0G9EAgG4gAlgREB9Jmm6r+MJQFgAUHtCRYlJPBIoA0llz4iMaNTlhayphckClmkgG8AvtzcenqUJABEIADWYdxAA) Working: [Playground Link](https://www.typescriptlang.org/play/?ts=3.7.5#code/MYewdgzgLgBAZjAvDAPAMRgUwB5U2AEwhgAoA6CgQwCcBzCALhkrAE8BtAXQEokA+VAHE+JbE0G9EAgG4gAlgREB9Jmm6r+MJQFgAUHtCRYlJPBIoA0llz4iMaNTlhayphckClmkgG8AvtzcenqUJABEIADWYdxAA) Note: reproduce on next too
Activity
mikearnaldi commentedon Feb 29, 2020
Interesting enough if you specify the full signature the generic is preserved:
Playground Link