Доки по разработке
This project is maintained by teniryte
Принципы
T extends X ? Y : Z) позволяет вычислять новый тип на основе совместимости T с X.infer внутри условного типа извлекает вложенный тип и хранит его в новом алиасе (ReturnType, ElementType).PickProperties).Пример
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]
Практика
PickProperties<T, string | number>), чтобы выделять нужные ключи.T extends ...), иначе T примет any.T extends any ? ... : ...).