TypeScript Utility Types mit Claude Code: Fortgeschrittenes Typsystem 2026
TypeScript's eingebaute Utility Types und fortgeschrittene Typ-Features ermöglichen extrem ausdrucksstarke und sichere APIs — Partial, Pick, Conditional Types, Template Literal Types. Claude Code beherrscht das TypeScript-Typsystem vollständig und generiert komplexe Typen.
Eingebaute Utility Types
Built-inDie wichtigsten Utility Types
# Prompt: "Zeige alle wichtigen TypeScript Utility Types mit praxisnahen Beispielen"
interface User {
id: string
email: string
name: string
role: 'admin' | 'user'
createdAt: Date
}
// Partial — alle Felder optional (für Updates)
type UserUpdate = Partial<User>
// { id?: string; email?: string; name?: string; ... }
// Required — alle Felder pflicht (Gegenteil von Partial)
type UserRequired = Required<Partial<User>>
// Pick — nur bestimmte Felder
type UserPreview = Pick<User, 'id' | 'name'>
// { id: string; name: string }
// Omit — bestimmte Felder weglassen
type CreateUser = Omit<User, 'id' | 'createdAt'>
// { email: string; name: string; role: ... }
// Readonly — unveränderlich
type ImmutableUser = Readonly<User>
// Record — Dictionary-Typ
type UserMap = Record<string, User>
type RolePermissions = Record<User['role'], string[]>
// ReturnType — Rückgabetyp einer Funktion
type FetchResult = ReturnType<typeof fetchUser>
// Parameters — Parameter-Typen einer Funktion
type FetchParams = Parameters<typeof fetchUser>
Conditional Types
ConditionalTypen die von anderen Typen abhängen
# Prompt: "Erstelle einen Conditional Type der den API-Response-Typ
# basierend auf dem Request-Typ bestimmt"
// NonNullable — null und undefined entfernen
type NonNullable<T> = T extends null | undefined ? never : T
// Eigener Conditional Type: IsArray
type IsArray<T> = T extends any[] ? 'yes' : 'no'
type Test1 = IsArray<string[]> // 'yes'
type Test2 = IsArray<string> // 'no'
// Infer: Typen aus anderen Typen extrahieren
type UnpackPromise<T> = T extends Promise<infer R> ? R : T
type Resolved = UnpackPromise<Promise<User>> // User
// Distributive Conditional Types
type ToArray<T> = T extends any ? T[] : never
type StringOrNumberArray = ToArray<string | number>
// string[] | number[] (nicht (string | number)[]!)
// API Response Typing:
type ApiResponse<T> = T extends { id: string }
? { data: T; success: true }
: { error: string; success: false }
Template Literal Types
TemplateString-Manipulation auf Typ-Ebene
# Prompt: "Erstelle typsichere Event-Namen für ein Event-System"
// Template Literal Types — String-Manipulation zur Compile-Zeit
type EventName = `on${Capitalize<string>}`
// 'onClick' | 'onChange' | etc.
// Konkrete Typen generieren:
type Entity = 'user' | 'post' | 'comment'
type Action = 'Created' | 'Updated' | 'Deleted'
type DomainEvent = `${Entity}${Action}`
// 'userCreated' | 'userUpdated' | 'userDeleted' | 'postCreated' | ...
// Getter/Setter Ableitung:
type Getters<T> = {
[K in keyof T as `get${Capitalize<string & K>}`]: () => T[K]
}
type UserGetters = Getters<Pick<User, 'name' | 'email'>>
// { getName: () => string; getEmail: () => string }
// CSS-Property Typing:
type CSSUnit = 'px' | 'rem' | 'em' | '%'
type CSSValue = `${number}${CSSUnit}`
const valid: CSSValue = '16px' // OK
const invalid: CSSValue = 'red' // TS Error!
Eigene Utility Types
CustomWiederverwendbare Typ-Helfer
# Prompt: "Erstelle eine Sammlung nützlicher Utility Types für unsere API"
// DeepPartial — verschachtelt optional
type DeepPartial<T> = {
[K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K]
}
// Nullable — null erlauben
type Nullable<T> = T | null
// StrictOmit — verhindert Typos bei Key-Namen
type StrictOmit<T, K extends keyof T> = Omit<T, K>
// Paginated Response Wrapper
type Paginated<T> = {
data: T[]
total: number
page: number
pageSize: number
hasNext: boolean
}
// MakeOptional — spezifische Felder optional machen
type MakeOptional<T, K extends keyof T> =
Omit<T, K> & Partial<Pick<T, K>>
// Verwendung:
type UserWithOptionalRole = MakeOptional<User, 'role'>
TypeScript-Prompt: "Erstelle einen Utility Type der alle string-Felder eines Interfaces als optionale Filter-Parameter zurückgibt." Claude Code navigiert das TypeScript Mapped Types System und generiert komplexe, korrekte Typen auf Anhieb.
TypeScript-Modul im Kurs
Im Claude Code Mastery Kurs: vollständiges TypeScript Advanced Modul — Utility Types, Conditional Types, Template Literals, Mapped Types, Declaration Merging und Type Guards.
14 Tage kostenlos testen →