Найти в Дзене

Типичная ошибка использования метода .sort() в Javascript/Typescript

Даже опытные разработчики могут не увидеть ошибку в следующем коде:

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