Что делает ключевое слово `infer` в условных типах TypeScript?
СобеседованиеДженерикиПродвинутые типы
- Объявляет переменную типа в условном выражении:
T extends Promise<infer R> ? R : T
- Извлечение возвращаемого типа:
T extends (...args: any[]) => infer R ? R : never
- Извлечение элементов кортежа:
T extends [infer H, ...infer Rest] ? ...
- Извлечение частей строк:
T extends \${infer P}` ? ...`
- Ковариантная позиция (return): результат — union
- Контравариантная позиция (params): результат — intersection
- Constrained infer (TS 4.7+):
infer N extends number — ограничение на выводимый тип