HttpHeaders является неизменным, поэтому при вызове append или set он возвращает новый объект.
let header = new HttpHeaders();
let other_header = header.append('foo','23');
console.log(header.get('foo')); // output null
console.log(other_header.get('foo')) // output 23
У нас есть пример:
Во-первых, неизменность данныхотправка по сети - обычная схема и на других платформах - одним из примеров является клиент OkHttp в мире Android / Java.
Во-вторых, отправляя данные по сети, мы пропускаем их через границунаше приложение и введите его в удаленную систему.Как только данные пересекают эту границу, они публикуются для всего мира и находятся вне нашего контроля.Случайно, нам нравятся объекты данных в нашем приложении, чтобы отразить, что будет отправлено в будущем или что было получено в прошлом.Чтобы достичь этого, нам нужны неизменные.Думайте об этом наоборот: когда запрос был отправлен и тело запроса было сериализовано, и после этого мы изменили бы объект тела запроса, тогда данные, локально хранящиеся на клиенте, расходятся с данными, отправленными на удаленный сервер.Это - в какой-то момент - окажется причиной глупых и предотвратимых ошибок.
Я не нашел документации или разговоров с авторами OkHttp, почему они выбрали неизменяемые.Тем не менее, документация Angular, к моему удивлению, довольно много говорит о выборе дизайна для неизменяемых!