Доки по разработке
This project is maintained by teniryte
inferПринципы
infer извлекает тип элемента массива, возвращаемого значения функции или любое другое вложенное значение.T extends Function) гарантируют, что утилита применяется только к допустимым типам.never, в зависимости от задачи.Пример
type ArrayElementType<T> = T extends (infer E)[] ? E : T;
type FunctionReturnType<T> = T extends (...args: any) => infer R ? R : T;
type OnlyFunctionReturnType<T extends (...args: any) => any> = T extends (
...args: any
) => infer R
? R
: never;
type Item = ArrayElementType<number[]>; // number
type Parsed = FunctionReturnType<typeof JSON.parse>; // any
Практика
infer для получения типов аргументов и возвращаемых значений при написании высокоуровневых утилит.T extends Function достаточно, если не нужны конкретные сигнатуры.FunctionReturnType вернёт исходный тип — это позволяет использовать утилиту без guard-ов.