> Для чего используется infer в TypeScript (TypeScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Арго
Стек: TypeScript
> Пример ответа
infer в TypeScript используется в условных типах (conditional types) для извлечения и «вывода» типа из другого типа. Он позволяет «захватить» часть типа, которая соответствует определённому шаблону, и затем использовать её в ветке true.
Основное применение:
-
Извлечение типа элемента из массива или Promise:
TYPESCRIPTtype Unpack<T> = T extends (infer U)[] ? U : T;type A = Unpack<string[]>; // stringtype B = Unpack<Promise<number>>; // не сработает, нужен другой шаблон -
Извлечение возвращаемого типа функции:
TYPESCRIPTtype ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;type Fn = (x: number) => string;type R = ReturnType<Fn>; // string -
Извлечение типа параметров функции:
TYPESCRIPTtype Params<T> = T extends (...args: infer P) => any ? P : never; -
Работа с промисами:
TYPESCRIPTtype UnwrapPromise<T> = T extends Promise<infer U> ? U : T;type P = UnwrapPromise<Promise<number>>; // number
infer всегда используется внутри ключевого слова extends в условном типе, и может быть применён только в позиции, где TypeScript может вывести тип (например, в параметрах функции, элементах массива, свойствах объекта).
> Похожие задачи по frontend
Используешь ли условные типы (conditional types) в TypeScript
Использовал ли ты mapped types в TypeScript
Как определить тип переменной через ReturnType в TypeScript
Что значит опциональное поле в TypeScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью