如何在 TypeScript 方法参数中正确为回调函数添加类型
大家好!我刚开始学习 TypeScript,遇到了一个问题。我的类中有一个方法接受回调函数。我想为参数添加类型,以便可以传递任何函数(任意数量的参数和返回值),但又不使用 `any`,以保留类型检查。
以下是我的尝试:
```typescript
class EventBus {
on(eventName: string, callback: any) { // 这样可行,但不安全
// ...
}
}
const bus = new EventBus();
bus.on('click', (data: number) => console.log(data)); // 即使传递字符串也不会报错
```
我明白 `any` 完全禁用了类型检查,这是不好的实践。我尝试过使用 `Function`,但它也过于宽泛,无法正常处理参数。
在文档中我看到过 `(...args: any[]) => any`,但我觉得这像是一个权宜之计。有没有更优雅的方法?如何在 TypeScript 中正确声明“任意函数”类型,以便: