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
相关产品推荐
相关产品推荐

