export interface CurriedSlice1<ArrayType> extends Function {
(toIndex: number): ArrayType[]
}
export interface CurriedSlice2<ArrayType> extends Function {
(fromIndex: number): CurriedSlice1<ArrayType>
(fromIndex: number, toIndex: number): ArrayType[]
}
export interface CurriedSlice<ArrayType = any> extends Function {
(list: ArrayType[], fromIndex: number, toIndex: number): ArrayType[]
(list: ArrayType[], fromIndex: number): CurriedSlice1<any>
(list: ArrayType[]): CurriedSlice2<any>
}