Avatar ·

Cómo obtener los tipos de argumentos de una función en TypeScript (Parameters, infer y tipos condicionales)

¡Hola a todos! He estado escribiendo en TypeScript recientemente y me encontré con un problema que me dejó perplejo. Tengo varias funciones que aceptan diferentes parámetros. Por ejemplo: ```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 { // ... } ``` Quiero escribir un wrapper universal que acepte cualquier función y sus argumentos, realice algún preprocesamiento (por ejemplo, logging) y luego llame a la función original. El problema es que no sé cómo obtener dinámicamente los tipos de argumentos de la función pasada. Esto es lo que he intentado: ```typescript function wrapFunction any>(fn: T, ...args: any[]) { console.log('Calling function with args:', args); return fn(...args); } ``` Esto funciona, pero se pierde la tipificación — `args` tiene tipo