React Typescript自定义钩子排序列表

时间:2020-09-15 13:02:05

标签: javascript reactjs typescript

我试图在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)

即:我正在将一个简单的对象电影数组作为列表传递,并尝试按“标题”进行排序。

如何键入此排序参数,以便可以将其用于任何对象数组?

干杯!

1 个答案:

答案 0 :(得分:1)

那是因为您使用的是object类型。尝试删除此类型注释。

由于list变量的类型定义正确,因此list.sort也定义良好,因此无需尝试使用TypeScript(see)帮助TypeScript。