typescript / expert
Snippet
Filterung und Schlüssel-Neuzuordnung von Interface-Eigenschaften mittels Template-Literalen
Die Schlüssel-Neuzuordnung bei Mapped Types ('as'-Klausel) kombiniert mit Typinferenz auf Template-String-Mustern ermöglicht die selektive Extraktion und Umbenennung von Eigenschaften. Dieses Muster entfernt unerwünschte Methoden und wandelt Getter-Namen (z.B. 'getUserName' -> 'userName') rein auf Typebene um.
snippet.ts
typescript
1
2
3
type GetterKeys<T> = { [K in keyof T as K extends `get${infer R}` ? Uncapitalize<R> : never]: T[K] };interface ApiService { getUserName(): string; getUserAge(): number; postData(data: object): void; }type CleanedApi = GetterKeys<ApiService>;
Erklärung
1
type GetterKeys<T> = { [K in keyof T as K extends `get${infer R}` ? Uncapitalize<R> : never]: T[K] };
Filtert Schlüssel mit 'get...', entfernt das Präfix, wandelt den Anfangsbuchstaben in Kleinschrift und schließt Nicht-Getter aus.
2
interface ApiService { getUserName(): string; getUserAge(): number; postData(data: object): void; }
Eingabe-Interface mit gemischten Getter-Methoden und Mutations-Operationen.
3
type CleanedApi = GetterKeys<ApiService>;
Mappt ApiService zu { userName: () => string; userAge: () => number; } und ignoriert Nicht-Getter-Methoden vollständig.