Dev Highlights

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

This project is maintained by teniryte

Conditional-типы

Принципы

Пример

type ReturnType_<T> = T extends (...args: any[]) => infer R ? R : any;
type ElementType<T> = T extends (infer U)[] ? U : T;
type ParametersType<T> = T extends (...args: infer P) => any ? P : never;

type R1 = ReturnType_<() => string>;            // string
type TestType = ElementType<typeof [1, 2, 3]>;  // number
type TestType2 = ParametersType<typeof parseInt>; // [string, (radix?: number) => number]

Практика