So erhalten Sie die Argumenttypen einer Funktion in TypeScript (Parameters, infer und bedingte Typen)
Hallo zusammen! Ich schreibe seit kurzem TypeScript und bin auf eine Aufgabe gestoßen, die mich vor ein Rätsel gestellt hat.
Ich habe mehrere Funktionen, die verschiedene Parameter akzeptieren. Zum Beispiel:
```typescript
function fetchUser(id: number, name: string): void {
// ...
}
function updateSettings(theme: 'light' | 'dark', fontSize: number): void {
// ...
}
function logError(error: Error, source: string, timestamp: number): void {
// ...
}
```
Ich möchte einen universellen Wrapper schreiben, der eine beliebige Funktion und ihre Argumente akzeptiert, eine Vorverarbeitung durchführt (z. B. Logging) und dann die ursprüngliche Funktion aufruft. Das Problem ist, dass ich nicht weiß, wie ich dynamisch die Argumenttypen der übergebenen Funktion erhalte.
Hier ist, was ich versucht habe:
```typescript
function wrapFunction any>(fn: T, ...args: any[]) {
console.log('Calling function with args:', args);
return fn(...args);
}
```
Das funktioniert, aber die Typisierung geht verloren — `args` hat den Typ