Даже опытные разработчики могут не увидеть ошибку в следующем коде:
function sortItems<T>(items: T[]): T[] {
return items.sort(/* some sort function */);
}
А она заключается в том, что метод sort не создаёт нового массива, а изменяет текущий. И это не очевидное поведение может привезти к появлению ошибок. Решается это довольно просто:
function sortItems<T>(items: T[]): T[] {
return [...items].sort(/* some sort function */);
}
Видимо это всех настолько “утомило”, что в спецификацию добавили метод toSorted.
Ещё одним “решением” для предотвращения появления этой ошибки в typescript является использование ReadonlyArray. Но, к сожалению, про него практически ни кто не знает.
Больше информации в Telegram канале https://t.me/around_dev