export const createStringSorter =
  <Obj extends Record<string, unknown>>(key?: keyof Obj, ascending = true) =>
  (left: Obj | string, right: Obj | string): number => {
      typeof left === 'string' ? left : (left[key as keyof Obj] as string)
      typeof right === 'string' ? right : (right[key as keyof Obj] as string)
    return leftStr.localeCompare(rightStr) * (ascending ? 1 : -1)
export const createNumberSorter =
  <Obj extends Record<string, unknown>>(key?: keyof Obj, ascending = true) =>
  (left: Obj | number, right: Obj | number): number => {
      typeof left === 'number' ? left : (left[key as keyof Obj] as number)
      typeof right === 'number' ? right : (right[key as keyof Obj] as number)
    if (Number.isNaN(leftNum)) return 1
    if (Number.isNaN(rightNum)) return -1
    return (leftNum - rightNum) * (ascending ? 1 : -1)
export const createDateSorter =
  <Obj extends Record<string, unknown>>(key?: keyof Obj, ascending = true) =>
  (left: Obj | Date, right: Obj | Date): number => {
      left instanceof Date ? left : (left[key as keyof Obj] as Date)
      right instanceof Date ? right : (right[key as keyof Obj] as Date)
    if (Number.isNaN(leftDate.getTime())) return 1
    if (Number.isNaN(rightDate.getTime())) return -1
    return (leftDate.getTime() - rightDate.getTime()) * (ascending ? 1 : -1)