You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

后端API排序函数的TypeScript类型约束问题求助

后端API排序函数的TypeScript类型约束问题求助

大家好,我正在给后端API写一个挺简单的排序函数,需求逻辑如下:

  • 如果没有排序需求,函数返回空字符串
  • 如果有排序需求,就根据指定列从枚举里取值,再做一点小修改后返回结果

不过我现在卡在类型约束的问题上了:
当sort不为null时,它的sortBy是传入函数的泛型T(字符串联合类型),这部分目前是正常工作的,但我不知道怎么正确给函数传入枚举,让sort.sortBy刚好是这个枚举的有效键。

下面是我目前的代码:

type SortState = null | {sortBy: string; sortAsc: boolean; }

const handleSort = <T, K extends T>(sort: SortState, sortEnum: K) => {
  if (!sort) {
    return '';
  }

  const name = sort.sortBy as T;
  const order = sort.sortAsc;

  const newQuery = `${order ? '-' : ''}${order ? sortEnum[name].replaceAll(',', ',-') : sortEnum[name]}`;
  return newQuery;
};

enum SortEnum {
  bar = 'bar',
  foo = 'foo'
}

type TableHeaders = 'foo' | 'bar'

const sortQuery = handleSort<TableHeaders>({sortBy: 'bar', sortAsc: false}, SortEnum)

我现在的泛型定义<T, K extends T>明显有问题,没法把sortBy和枚举的键关联起来,想请教各位大佬,怎么调整类型定义,才能让sort.sortBy必须是传入的sortEnum的有效键,同时保证整个函数的类型安全呢?

备注:内容来源于stack exchange,提问作者adammo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 14:27:37