我试图在react中创建一个自定义钩子,以返回基于两个参数的排序数组:列表本身和带有我要排序的键的字符串。 在询问如何解决问题之前尝试了几种策略,很多时间都在咒骂TS,但仍然相信它有一个我看不到的简单解决方案。
挂钩:
type Item = {
[key: string]: number | string,
}
function useSortList(list: Item[], key: string) {
return list.sort((a: object, b: object) => a[key] > b[key] ? 1 : -1) || list;
}
export default useSortList;
在a[key] > b[key]
上出现此错误:
元素隐式地具有“ any”类型,因为类型“ string”的表达式不能用于索引类型“ {}”。 在类型'{}'上找不到带有类型参数'string'的索引签名。ts(7053)
即:我正在将一个简单的对象电影数组作为列表传递,并尝试按“标题”进行排序。
如何键入此排序参数,以便可以将其用于任何对象数组?
干杯!
答案 0 :(得分:1)
那是因为您使用的是object
类型。尝试删除此类型注释。
由于list
变量的类型定义正确,因此list.sort
也定义良好,因此无需尝试使用TypeScript(see)帮助TypeScript。