title: I want totally immutable object in TS
body: <p>I have some big object, like</p>
  
  <pre><code>const a={
   b:33, 
   c:[78, 99], 
   d:{e:{f:{g:true, h:{boom:'selecta'}}}};/// well, even deeper than this...
  </code></pre>
  
  <p>And I'd like TS <strong>not</strong> to allow me to do</p>
  
  <pre><code>a.d.e.f.h.boom='respek';
  </code></pre>
  
  <p>How can I immutate the object completely? Is it only by creating interface with "readonly" and interfaces for each deeply nested object?</p>