为了账号安全,请及时绑定邮箱和手机立即绑定

实际上兼容的两个函数,为什么TypeScript报错“没有兼容的调用签名”?

实际上兼容的两个函数,为什么TypeScript报错“没有兼容的调用签名”?

拉莫斯之舞 2019-03-15 15:19:28
自己实现了一个缩水版的EventTarget:interface MyEventTarget {    addEventListener: (type: string, listener: EventListener) => void}但如果想和原生EventTarget混合使用的话:function test(foo: MyEventTarget | EventTarget) {    return foo.addEventListener('click', console.log);}会报错:无法调用类型缺少调用签名的表达式。类型“((type: string, listener: EventListener) => void) | ((type: string, listener: EventListener | Eve...”没有兼容的调用签名。如果强行拆开的话,却又可以:function test(foo: MyEventTarget | EventTarget) {    if (foo instanceof EventTarget) {        return foo.addEventListener('click', console.log);    }    else {        return foo.addEventListener('click', console.log);    }}// OK但是实在是太丑了。所以请问一下大家:Is it a feature, or a bug?不论是feature还是bug,类似的情形应该怎样优雅地处理?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 353 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信