Avatar ·

如何在TypeScript中获取函数参数类型(Parameters、infer和条件类型)

大家好!我最近开始写TypeScript,遇到了一个让我困惑的问题。 我有几个接受不同参数的函数。例如: ```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 { // ... } ``` 我想编写一个通用的wrapper,它接受任何函数及其参数,进行一些预处理(例如日志记录),然后调用原始函数。问题在于我不知道如何动态获取传入函数的参数类型。 以下是我尝试过的: ```typescript function wrapFunction any>(fn: T, ...args: any[]) { console.log('Calling function with args:', args); return fn(...args); } ``` 这可以工作,但丢失了类型检查——args的类型是any[],我得不到提示。