/** * Тип, который возвращает дифф между двумя объектами */ export declare type Diff = T extends U ? never : T; /** * Получить размер кортежа */ export declare type GetLength = T['length']; /** * Получить кортеж БЕЗ первого элемента */ export declare type DropFirstInTuple = ((...args: T) => any) extends (arg: any, ...rest: infer U) => any ? U : T; /** * Тип, позволяющий получить последний кортежа */ export declare type GetLast = T[GetLength>]; /** * Тип который может deep изменять свойства number -> number | string */ export declare type StringifyObject = { [Key in keyof Base]: Base[Key] extends number ? number | string : Base[Key] extends Record ? StringifyObject : Base[Key]; };