(Library author here.) Unfortunately, in JavaScript it's not possible to override array element reassignment behavior. You can call Object.freeze on the array, which makes reassignment silently do nothing, but you cannot override it to throw an exception.
The reason the docs say "the methods that would normally mutate..." is that in the specific case of methods (e.g. array.push()), the library can and does override them to throw exceptions.
I would certainly prefer to make that example throw an exception, but it's simply not possible in JS. :)
__DEV__ = true;
var array = ['a', 'b', 'c']
deepFreezeAndThrowOnMutationInDev(array)
array[0] = 10;
Error: You attempted to set the key `0` with the value `10` on an object that is meant to be immutable and has been frozen.
Thanks for sharing that tidbit of information. I did not know that and now I do, I appreciate it!
I wonder what the reason behind that is, if you're feeling extra motivated you could even look into having a conversation with the folks who decide what future versions of JS look like to add something like it. I am a huge proponent of immutability and can see how being able to override array element assignment behaviors would improve your library.
The reason the docs say "the methods that would normally mutate..." is that in the specific case of methods (e.g. array.push()), the library can and does override them to throw exceptions.
I would certainly prefer to make that example throw an exception, but it's simply not possible in JS. :)