export default function getNextSortValue( sortSequence: Record>, field: SortField, ) { return (prevValue: Sort) => { const sequence = sortSequence[field]; return getNextValueFromSequence(sequence, prevValue); }; } export function getNextValueFromSequence(sequence: Array, prevValue: T) { const curIndex = sequence.findIndex((val) => val === prevValue); const nextIndex = curIndex + 1 > sequence.length - 1 ? 0 : curIndex + 1; return sequence[nextIndex]; } // asc desc undefined type Order = 'asc' | 'desc' | undefined; const sequence: Array = [ 'desc', 'asc', undefined ]; export const getNextOrderValue = (getNextValueFromSequence).bind(undefined, sequence);