I am trying to sort an array and am getting the following error.
"Argument of type '(a: User, b: User) => number | undefined' is not assignable to parameter of type '(a: User, b: User) => number'."
What am I missing? I will be grateful for your help.
this.users.sort(function(a, b) {
if (a.messagesLast && b.messagesLast) {
return new Date(a.messagesLast.datemes).getTime() - new Date(b.messagesLast.datemes).getTime();
}
return ;
});
A JavaScript sort compare function needs to return a number, see docs, in your implementation it returns undefined, if one of the items doesn't have the property messagesLast.
In order to keep the original order in this case, you need to return 0 instead of undefined.
this.users.sort(function(a, b) {
if (a.messagesLast && b.messagesLast) {
return new Date(a.messagesLast.datemes).getTime() - new Date(b.messagesLast.datemes).getTime();
}
return 0;
});