craftingIT

bridgingIT - Blog

TypeScript und Immutable Types

- Tobias Meier - Microsoft Individualentwicklung
Themen: Angular, TypeScript, Individualentwicklung
Blog Bild

An vielen Stellen bei der JavaScript - Entwicklung werden Immutable Types eingesetzt, d.h. die darauf basierenden Objekte sind nicht änderbar.

Unter Anderem kommt dieses Konstrukt bei Reducern in ngrx (bzw. Redux) zum Einsatz:

Mit Hilfe des Spread-Operators "…" werden die Properties von state in ein neues Objekt {} kopiert und anschließend das Property loading auf true gesetzt. Allerdings hätte der Compiler auch das direkte setzen von state.loading zugelassen, obwohl dies dem State-Management von redux widerspricht. Durch die Verwendung des Utility-Type Readonly kann der Compiler eine Änderung direkt am Property verhindern:

Anzumerken ist, dass dies nur auf der ersten Ebene erkannt wird. Aber diese Einschränkung trifft auch auf den "Spread-Operator" zu. Bei komplexeren Objektstrukturen kann für ein deepCopy z.B. loadsh eingesetzt werden. Die Verantwortung für die Einhaltung der Immutable-Regeln liegt dann aber in der Hand von uns Entwicklern.