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

TypeScript错误TS2345咨询:sort回调返回值类型不匹配问题

解决TypeScript排序回调返回类型不匹配的TS2345错误

这个错误的根源很明确:JavaScript和TypeScript里的数组sort方法,要求传入的回调函数必须返回数字类型(-1、0、1分别表示a应该排在b前面、两者相等、a应该排在b后面),但你的代码里返回了boolean(比如a[5] > b[5]这种比较会得到true/false)或者1,类型完全不匹配,所以TypeScript抛出了TS2345错误。

给你调整后的代码,完全符合类型要求:

this.rezerwacjeFilteredByseaarchInput.sort(function (a, b) {
  // 先处理null的边界情况
  if (a[5] === null && b[5] === null) return 0;
  if (a[5] === null) return 1;
  if (b[5] === null) return -1;

  // 根据排序顺序返回明确的数字结果
  if (firmaSortOrder) {
    return a[5] > b[5] ? 1 : a[5] < b[5] ? -1 : 0;
  } else {
    return b[5] > a[5] ? 1 : b[5] < a[5] ? -1 : 0;
  }
});

关键调整点:

  • 补充了两个值都是null的情况,返回0表示两者排序位置相同,避免逻辑漏洞
  • 把原来的布尔比较结果转换成了1/-1/0的数字,完全符合sort回调的类型要求
  • 保留了你原本的null处理逻辑(null值排在后面)和排序顺序逻辑

这样修改后,TypeScript的类型检查会通过,排序逻辑也更严谨。

内容的提问来源于stack exchange,提问作者Pawel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:38:03