I'm wondering if you could help me, I'd like to have a simple function to sort array of objects case-insensitive, example of usage:
myArray.sort((a, b) => sortArr(a, b, 'someKey'))
Function itself is dead simple:
const sortArr = (
firstItem,
secondItem,
key
) => (firstItem[key].toLowerCase() > secondItem[key].toLowerCase() ? -1 : 1)
However I have a big trouble typing it. firstItem
and secondItem
should be generics (T).
key
should be a valid key of that object so I assume K extends keyof T
is enough. However inside the function firstItem[key] when I try to use toLowerCase method says:
Property 'toLowerCase' does not exist on type 'T[K]'.
How do I type that T[K] where K is a single key of that object given as parameter is a string type?