Avatar ·

Como obter os tipos de argumentos de uma função em TypeScript (Parameters, infer e tipos condicionais)

Olá a todos! Estou escrevendo em TypeScript recentemente e me deparei com uma tarefa que me deixou perplexo. Tenho várias funções que aceitam parâmetros diferentes. Por exemplo: ```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 { // ... } ``` Quero escrever um wrapper genérico que aceite qualquer função e seus argumentos, faça algum pré-processamento (por exemplo, logging) e então chame a função original. O problema é que não sei como obter dinamicamente os tipos dos argumentos da função passada. Aqui está o que tentei: ```typescript function wrapFunction any>(fn: T, ...args: any[]) { console.log('Calling function with args:', args); return fn(...args); } ``` Isso funciona, mas perde a tipagem — `args` tem o tipo