TypeScript vscode 源码 参数类型 不解

发布于 2022-09-12 22:30:54 字数 631 浏览 20 评论 0

 export function fromNodeEventEmitter<T>(emitter: NodeEventEmitter, eventName: string, map: (...args: any[]) => T = id => id): Event<T> {
     const fn = (...args: any[]) => result.fire(map(...args));
     const onFirstListenerAdd = () => emitter.on(eventName, fn);
     const onLastListenerRemove = () => emitter.removeListener(eventName, fn);
     const result = new Emitter<T>({ onFirstListenerAdd, onLastListenerRemove });

     return result.event;
 }

map: (...args: any[]) => T = id => id) id是什么意思,怎么是这样写的 = id => id

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寂寞清仓 2022-09-19 22:30:54

参数默认值,你把类型去掉就看的懂了
https://es6.ruanyifeng.com/#d...

傲鸠 2022-09-19 22:30:54

补充:
由于 function fromNodeEventEmitter<T>(emitter: NodeEventEmitter, eventName: string, map: (...args: any[]) => T = id => id): Event<T> 参数 map 定义了默认类型,所以它将会同是可选的
image.png
也造成了 可以写成先传发射器与事件名并给一个变量,就达成一个

  • 新命名
  • 被包装
  • 可放入函数参数
const onHello = Event.fromNodeEventEmitter<Electron.WebContents>(ipcMain, 'ipc:hello');
// 此时就注册了监听:'ipc:hello'事件的一个回调函数。
const remove = onHello(() => console.log('注册了一个关于`ipc:hello`事件的回调'));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文