【发布时间】:2020-10-09 09:42:41
【问题描述】:
我在 TypeScript 中编写了一个简单的函数,它根据对象的一个属性对对象数组进行排序。 代码如下:
export const mySortFunction = (sortKey: string, invert: boolean) => {
return (a: any, b: any) => {
if (a[sortKey] < b[sortKey]) {
return invert ? 1 : -1;
} else if (a[sortKey] > b[sortKey]) {
return invert ? -1 : 1;
}
return 0;
}
}
然后,如果我有一个Person 类型,具有name 和lastname 属性,我可以使用persons.sort(mySortFunction('name', true)) 或persons.sort(mySortFunction('lastname', false)) 之类的调用对人员列表进行排序。
该功能正在运行,但我对这里的输入不太满意。 基本上,我想要这样的东西:
export const mySortFunction = <T>(sortKey: string, invert: boolean) => {
return (a: T, b: T) => {
...
}
}
并向 TypeScript 指示 T 应该扩展一个类型,该类型的键与 sortKey 的值匹配...
如何为我的函数签名设置一个好的类型?
【问题讨论】:
标签: typescript typescript-typings