capypad
0 Tage Serie
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
typescript
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.