Sébastien TIMONER
Als Experte für Webentwicklung und Teammanagement spezialisiere ich mich auf die Erstellung und Optimierung hochleistungsfähiger digitaler Lösungen. Mit umfassender Expertise in modernen Technologien wie React.js, Node.js, TypeScript, Symfony und Zephyr OS für IoT stelle ich bei offroadLabs den Erfolg komplexer SaaS- und IoT-Projekte von der Konzeption bis zur Produktion für Unternehmen verschiedener Branchen sicher.
Bei offroadLabs biete ich maßgeschneiderte Entwicklungsdienstleistungen, die technische Expertise mit einem kollaborativen Ansatz verbinden. Ob bei der Erstellung einer innovativen SaaS-Lösung, der Entwicklung von IoT-Systemen mit Zephyr OS, der Modernisierung einer bestehenden Anwendung oder der Unterstützung bei der Weiterbildung eines Teams - ich setze mich für die Bereitstellung robuster und leistungsstarker Lösungen ein, die auf die spezifischen Bedürfnisse jedes Projekts zugeschnitten sind.
Ich bin verfügbar für Projekte im Raum Aix-en-Provence oder vollständig remote.
TypeScript bietet viele Utility Types, die es dir ermöglichen, Typen dynamisch und praktisch zu manipulieren. Ob es darum geht, Eigenschaften optional oder unveränderlich zu machen oder bestimmte Felder eines Typs zu filtern, diese Utilities können dir helfen, saubereren, sichereren und lesbaren Code zu schreiben.
In diesem Artikel wirst du einige der am häufigsten verwendeten Utility Types in TypeScript kennenlernen, mit konkreten Beispielen, die dir zeigen, wie und wann du sie verwenden kannst.
Partial<T>
Der Utility Type Partial<T>
wandelt alle Eigenschaften eines Typs T
in optionale Eigenschaften um. Dies ist besonders nützlich, wenn du mit Objekten arbeitest, bei denen nicht immer alle Eigenschaften erforderlich sind.
Stellen wir uns einen Typ User
mit Pflichtfeldern vor:
typescript
Wenn du eine Funktion erstellen möchtest, die einen Benutzer aktualisiert, aber nur eine Teilmenge dieser Eigenschaften benötigt, kannst du Partial<User>
verwenden:
typescript
Dank Partial<User>
kannst du jetzt nur bestimmte Eigenschaften aktualisieren, ohne alle anderen angeben zu müssen.
Readonly<T>
Readonly<T>
macht alle Eigenschaften eines Typs T
unveränderlich. Das bedeutet, dass nach der Erstellung des Objekts seine Eigenschaften nicht mehr geändert werden können, was ideal für konstante Objekte ist.
typescript
Mit Readonly<Config>
stellst du sicher, dass config
während der gesamten Laufzeit unveränderlich bleibt.
Pick<T, K>
Der Utility Type Pick<T, K>
erstellt einen neuen Typ, indem er nur bestimmte Eigenschaften eines Typs T
auswählt. Dies ist nützlich, wenn du eine Teilmenge eines bestehenden Typs erstellen möchtest.
typescript
Mit Pick<User, "id" | "name">
erstellst du einen Typ UserSummary
, der nur die Eigenschaften id
und name
enthält.
Omit<T, K>
Umgekehrt erstellt Omit<T, K>
einen neuen Typ, indem bestimmte Eigenschaften eines Typs T
ausgeschlossen werden. Es ist das Gegenteil von Pick
.
typescript
In diesem Beispiel enthält UserWithoutAddress
alle Eigenschaften von User
außer address
.
Record<K, T>
Record<K, T>
wird verwendet, um einen Objekttyp zu erstellen, bei dem die Schlüssel K
von einem bestimmten Typ sind und die Werte vom Typ T
. Dies ist nützlich für die Erstellung von assoziativen Objekten wie Wörterbüchern oder Mappings.
Angenommen, du möchtest ein Objekt erstellen, das Benutzerrollen mit Zugriffsrechten verknüpft:
typescript
In diesem Beispiel stellt Record<Role, Permissions[]>
sicher, dass das Objekt rolePermissions
alle Schlüssel admin
, user
und guest
mit Werten vom Typ Permissions[]
enthält.
Exclude<T, U>
Exclude<T, U>
ermöglicht es, einen Typ zu erstellen, indem bestimmte Typen aus einem anderen Typ ausgeschlossen werden. Dies ist nützlich zum Filtern spezifischer Typen aus einem Union Type.
typescript
Mit Exclude<Status, "suspended">
erstellst du einen Typ ActiveStatus
, der nicht "suspended"
sein kann.
Die Utility Types von TypeScript ermöglichen es dir, komplexe Typen prägnant und lesbar auszudrücken. Durch die Nutzung von Partial
, Readonly
, Pick
, Omit
, Record
und Exclude
kannst du deine Typen dynamisch manipulieren und die Anforderungen deiner Anwendung erfüllen, ohne deinen Code zu überladen.
Diese Utilities sind nur die Spitze des Eisbergs: TypeScript bietet noch viele weitere fortgeschrittene Utility Types. Nimm dir die Zeit, diese Werkzeuge zu erkunden, und dein Code wird wartbarer, sicherer und leichter zu lesen sein.
Durch die Anwendung dieser Tipps kannst du deine Typen effektiver manipulieren und noch robusteren TypeScript-Code schreiben. Viel Spaß beim Coding!