Aren't points 1 and 2 just arguments for a stricly typed language?
I am simply repeating the well-known benefits to immutables which is completely orthogonal to a type system, static or otherwise.
const a = {};
Object.setPrototypeOf(a, SomethingElse);Remember I have said const PLUS Object.freeze() Both are needed to get the true immutable effect.