typescript / expert
Snippet
Distributive bedingte Typen zur Filterung
Durch die Nutzung distributiver bedingter Typen und des Typs 'never' können wir leistungsstarke Hilfstypen erstellen, die Objekteigenschaften basierend auf ihren Wertetypen filtern. Dies ist essenziell für saubere API-Verträge und State-Management.
snippet.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type NonFunctionPropertyNames<T> = {[K in keyof T]: T[K] extends Function ? never : K}[keyof T];type NonFunctionProperties<T> = Pick<T, NonFunctionPropertyNames<T>>;interface UserProfile {id: string;age: number;updateEmail: (email: string) => void;}type CleanProfile = NonFunctionProperties<UserProfile>;// Result: { id: string; age: number; }
Erklärung
1
T[K] extends Function ? never : K
Wenn die Eigenschaft eine Funktion ist, geben wir 'never' zurück; andernfalls den Namen des Eigenschaftsschlüssels.
2
[keyof T]
Indizierter Zugriff, der das Objekt in eine Union seiner Werte auflöst und dabei 'never' effektiv entfernt.