Como usar trackBy com ngFor

Eu realmente não consigo entender do que devo retornartrackBy. Com base nos exemplos que eu vi na web, devo retornar o valor de alguma propriedade no objeto. Está correto? Por que obtenho índice como parâmetro?

Por exemplo, no seguinte caso:

constructor() {
    window.setInterval(() => this.users = [
            {name: 'user1', score: Math.random()},
            {name: 'user2', score: Math.random()}],
        1000);
}

userByName(index, user) {
    return user.name;
}

...

<div *ngFor="let user of users; trackBy:userByName">{{user.name}} -> {{user.score}}</div>

Os objetos mostrados no modelo ainda são atualizados, apesar do nome ser inalterado. Por quê?

questionAnswers(2)

yourAnswerToTheQuestion