如何在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[],我得不到提示。