Ответ
Да, использовал. В TypeScript infer внутри условных типов позволяет вывести тип из другого типа, что особенно полезно при создании утилитарных типов для работы с промисами, функциями или структурами данных в Node.js.
Пример извлечения типа из Promise:
type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
type StringResult = UnwrapPromise<Promise<string>>; // string
type NumberResult = UnwrapPromise<number>; // number
Практическое применение в Node.js:
Часто использую это для типизации результатов асинхронных операций, например, при работе с async/await или библиотеками вроде Prisma:
type ExtractQueryResult<T> = T extends (...args: any[]) => Promise<infer U> ? U : never;
// Для функции, возвращающей промис с пользователем
type User = ExtractQueryResult<typeof getUserById>;
infer также лежит в основе встроенных утилит TypeScript, таких как ReturnType и Parameters, которые я применяю для улучшения типизации в Express-роутах или сервисных слоях.