UNPKG

@redux-ts-starter-kit/slice

Version:
42 lines (41 loc) 3.25 kB
export declare type PartialKeys<T, K extends PropertyKey = PropertyKey> = Partial<Pick<T, Extract<keyof T, K>>> & Omit<T, K> extends infer O ? { [P in keyof O]: O[P]; } : never; /** * @author 'tsdef' */ export declare type IsAny<T, True, False = never> = True | False extends (T extends never ? True : False) ? True : False; /** * @author 'tsdef' */ export declare type IsUnknown<T, True, False = never> = unknown extends T ? IsAny<T, False, True> : False; /** * @see https://stackoverflow.com/questions/51465182/how-to-remove-index-signature-using-mapped-types */ export declare type RemoveIndex<T> = { [K in keyof T as string extends K ? never : number extends K ? never : K]: T[K]; }; export interface Action<T extends string = string> { readonly type: T; } export interface NotEmptyObject { [s: string]: string | number | symbol | boolean | object | undefined | null; [s: number]: string | number | symbol | boolean | object | undefined | null; } export interface AnyAction<T extends string = string> extends Action<T> { [s: string]: any; } export interface PayloadAction<P = any, T extends string = string> extends Action<T> { readonly payload: P; } declare type IncreaseNum<N extends number> = IsAny<N, never, false> extends false ? number extends N ? never : N extends 0 ? 1 : N extends 1 ? 2 : N extends 2 ? 3 : N extends 3 ? 4 : N extends 4 ? 5 : N extends 5 ? 6 : N extends 6 ? 7 : N extends 7 ? 8 : N extends 8 ? 9 : N extends 9 ? 10 : N extends 10 ? 11 : N extends 11 ? 12 : N extends 12 ? 13 : N extends 13 ? 14 : N extends 14 ? 15 : N extends 15 ? 16 : N extends 16 ? 17 : N extends 17 ? 18 : N extends 18 ? 19 : N extends 19 ? 20 : N extends 20 ? 21 : N extends 21 ? 22 : N extends 22 ? 23 : N extends 23 ? 24 : N extends 24 ? 25 : N extends 25 ? 26 : N extends 26 ? 27 : N extends 27 ? 28 : N extends 28 ? 29 : N extends 29 ? 30 : N extends 30 ? 31 : N extends 31 ? 32 : N extends 32 ? 33 : N extends 33 ? 34 : never : never; export declare type NestedObject<S extends string[] | ReadonlyArray<string>, Start extends number, Fin, Max extends number = GetArrayLength<S>> = number extends Start ? never : Start extends Max ? Fin : { [K in S[Start]]: NestedObject<S, IncreaseNum<Start>, Fin, Max>; }; export declare type GetArrayLength<S extends any[] | ReadonlyArray<any>> = S extends { length: infer L; } ? L : never; export declare type Getter<P extends string[] | ReadonlyArray<string>, O extends { [s: string]: any; }> = GetArrayLength<P> extends 0 ? O : GetArrayLength<P> extends 1 ? O[P[0]] : GetArrayLength<P> extends 2 ? O[P[0]][P[1]] : GetArrayLength<P> extends 3 ? O[P[0]][P[1]][P[2]] : GetArrayLength<P> extends 4 ? O[P[0]][P[1]][P[2]][P[3]] : GetArrayLength<P> extends 5 ? O[P[0]][P[1]][P[2]][P[3]][P[4]] : GetArrayLength<P> extends 6 ? O[P[0]][P[1]][P[2]][P[3]][P[4]][P[5]] : GetArrayLength<P> extends 7 ? O[P[0]][P[1]][P[2]][P[3]][P[4]][P[5]][P[6]] : GetArrayLength<P> extends 8 ? O[P[0]][P[1]][P[2]][P[3]][P[4]][P[5]][P[6]][P[7]] : GetArrayLength<P> extends 9 ? O[P[0]][P[1]][P[2]][P[3]][P[4]][P[5]][P[6]][P[7]][P[8]] : GetArrayLength<P> extends 10 ? O[P[0]][P[1]][P[2]][P[3]][P[4]][P[5]][P[6]][P[7]][P[8]][P[9]] : never; export {};