问题描述
我正在尝试以 Flow 的严格模式编写事件总线:
const EventBus = {
on(event: string,callback: any => void) {
document.addEventListener(
'myproject-' + event,(e: {detail: any}) => callback((e.detail)),);
},...
我的事件总线实际上可以接受任何类型(包括 null),并且相信 document.addEventListener()
以后会返回相同的类型。
然而,这会触发 unclear-type 规则。
使用更具体的类型似乎没有帮助:
type DetailType = ?(string | {...});
const EventBus = {
on(event: string,callback: DetailType => void) {
document.addEventListener(
'myproject-' + event,(e: {detail: DetailType}) => callback((e.detail: DetailType)),...
}
现在(很长的)错误是:
无法调用 document.addEventListener
,因为:字符串 [1] 与字符串文字 wheel
[2] 不兼容。或者字符串 [1] 与字符串文字 abort
[3] 不兼容。或者不精确的对象类型 [4] 与第一个参数中的精确 MessageEvent
[5] 不兼容。或者字符串 [1] 与字符串文字 beforeunload
[6] 不兼容。或者字符串 [1] 与字符串文字 storage
[7] 不兼容。或者不精确的对象类型 [4] 与第一个参数中的精确 Event
[8] 不兼容。Flow(incompatible-call)
同样,我尝试了一个使用泛型的版本,但我不知道如何让 Flow 相信 document.addEventListener
稍后会触发一个包含与 detail
属性相同类型的事件。
我该如何处理这种情况?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)