In JavaScript and TypeScript, object references are often treated as disposable. An object is created, assigned to a variable, passed around, replaced, copied, spread, cloned, and eventually discarded.
That is normal language behavior, but in larger mutable systems it creates a specific class of bugs: stale aliases.
A stale alias appears when one part of the program still holds a reference to an old object while another part has already replaced that object with a new one. The old reference is still valid JavaScript, but it no longer points to current data.
Hard Object References is a discipline for avoiding that class of bugs.
The idea is simple:






