infer работает только внутри conditional types и позволяет «вытащить» тип из дженерика. Именно на нём построены стандартные утилиты: ReturnType, Parameters, InstanceType.

Урок из серии по TypeScript на канале @antonov_i.