> Для чего используется infer в TypeScript (TypeScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Арго

Стек: TypeScript

> Пример ответа

infer в TypeScript используется в условных типах (conditional types) для извлечения и «вывода» типа из другого типа. Он позволяет «захватить» часть типа, которая соответствует определённому шаблону, и затем использовать её в ветке true.

Основное применение:

  1. Извлечение типа элемента из массива или Promise:

    TYPESCRIPT
    type Unpack<T> = T extends (infer U)[] ? U : T;
    type A = Unpack<string[]>; // string
    type B = Unpack<Promise<number>>; // не сработает, нужен другой шаблон
  2. Извлечение возвращаемого типа функции:

    TYPESCRIPT
    type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
    type Fn = (x: number) => string;
    type R = ReturnType<Fn>; // string
  3. Извлечение типа параметров функции:

    TYPESCRIPT
    type Params<T> = T extends (...args: infer P) => any ? P : never;
  4. Работа с промисами:

    TYPESCRIPT
    type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
    type P = UnwrapPromise<Promise<number>>; // number

infer всегда используется внутри ключевого слова extends в условном типе, и может быть применён только в позиции, где TypeScript может вывести тип (например, в параметрах функции, элементах массива, свойствах объекта).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью