Can TypeScript's `readonly` fully replace Immutable.js? : <p>I have worked on a couple of projects using React.js. Some of them have used Flux, some Redux and some were just plain React apps utilizing Context. </p>

<p>I really like the way how Redux is using functional patterns. However, there is a strong chance that developers unintentionally mutate the state. When searching for a solution, there is basically just one answer - Immutable.js. To be honest, I hate this library. It totally changes the way you use JavaScript. Moreover, it has to be implemented throughout the whole application, otherwise you end up having weird errors when some objects are plain JS and some are Immutable structures. Or you start using <code>.toJS()</code>, which is - again - very very bad.</p>

<p>Recently, a colleague of mine has suggested using TypeScript. Aside from the type safety, it has one interesting feature - you can define your own data structures, which have all their fields labeled as <code>readonly</code>. Such a structure would be essentially immutable. </p>

<p>I am not an expert on either Immutable.js or TypeScript. However, the promise of having immutable data structures inside Redux store and without using Immutable.js seems too good to be true. Is TypeScript's <code>readonly</code> a suitable replacement for Immutable.js? Or are there any hidden issues?</p>
