Dev Highlights

Доки по разработке

This project is maintained by teniryte

Conditional-типы с infer

Принципы

Пример

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

Практика