我想在typerscript中通过数值属性对对象数组进行排序。
要做到这一点,我有下面的代码。它有一个问题,它不强制在T
的prop
键的值必须是数字。当然,我可以只在运行时检查arr
中的任何值的类型,但我想知道如何在编译时通过使用typescript强制这一点。
function sortByProperty<T>(arr : T[], prop : keyof T) : T[] {
return arr.sort((a, b) => a[prop] - b[prop]);
}
1条答案
按热度按时间jobtbby31#
简单的解决方案如下所示:
我们将
prop
的类型存储在一个新的泛型类型K
中,并强制T
必须是一个对象类型,其中属性K
的类型是number
。如果我们选择的属性名与
number
属性不对应,则会导致编译时错误。Playground