Продолжаю прокачивать TypeScript и сегодня плотно погрузился в тему… — xycu2.rar — TG.ME

Продолжаю прокачивать TypeScript и сегодня плотно погрузился в тему infer 🧠

Суть проста: infer позволяет TypeScript вытащить конкретный тип из сложной конструкции (например, из аргументов или возвращаемого значения функции).
Сделал небольшой дженерик MyParams, который достаёт тип аргумента id:
function getUser(id: number) {}
function getUser2(id: string) {}

type MyParams<T> = T extends ((id: infer R) => unknown) ? R : never;

type Test1 = MyParams<typeof getUser> // number
type Test2 = MyParams<typeof getUser2> // string


💡 Интересный нюанс, который сегодня осознал: Параметры любой функции в TS на уровне типов всегда представляются в виде массива (кортежа).

Например, для (x: number, y: string) => string параметры на уровне типов — это [number, string].

Именно поэтому запись (...args: any[]) => any универсальна и подходит под функцию с любым количеством аргументов (от 0 и больше), ведь их параметры просто упакованы в массив!
Двигаемся дальше 🔥
1❤2
October 11, 2026 26 1