По поводу readonly в рантайме — почему бы не добавить Object.defineProperty с writable — false? Если вы на ts пишете подключаемую библиотеку, использовать которую предполагается подключением на страницу через скрипт, или сборкой с обычным JS — может пригодиться
Если вам, как вы указали выше, важно чтобы Object.Prototype объекта был не null (для redux), то почему бы не написать собственный getter, который бы выглядел как-то так:
function get(object, key){
return object.hasOwnProperty(key) ? object[key] : undefined
}
Таким образом вы оставите только те свойства объекта, которые принадлежат именно ему, т.е. для вашего map — только добавленные свойства
Таким образом вы оставите только те свойства объекта, которые принадлежат именно ему, т.е. для вашего map — только добавленные свойства