
























github: https://github.com/Misaka-0x447f/createTypedEvent
npm: https://www.npmjs.com/package/@misaka17535/create-typed-event
相比其他事件库,首先是带类型,让用户能知道 payload 的类型;其次是函数式,不再需要手敲事件名。然后是 sub 函数自动返回 unsub 函数,不再必须传入 sub 时的 listener:
const misakaStateChange = createTypedEvent<{ selfDestructionInProgress: boolean }>()
// returns unsub function without defining handler outside
const unsub = misakaStateChange.sub((payload) => console.log(payload))
misakaStateChange.dispatch({selfDestructionInProgress: true})
unsub()
>>> { selfDestructionInProgress: true }
另外还自带 react hook ,完美桥接 react 响应式变量,如果你想你也可以轻松写出其他响应式框架的版本。
是新包,但是已经在各种内部项目里用了两三年了,用过的同事都说好。
第 1 条附言 · 2025 年 6 月 4 日
我又去看了一圈,依然确认绝大多数库都需要你手写一个事件名才能订阅,就像 emitter.on('xxx'... 这种模式。如果采用这种模式,还想要自动补全事件名,那就得额外创建一层“事件总线”,做不到一个变量名一个事件。
至于 rxjs ,那人家确实支持。但这意味着你要把那么大一个家伙塞进自己的代码仓库里诶?还要费心做 treeshaking ?
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。