打字稿“专门”重载

时间:2015-08-25 16:49:25

标签: typescript

是否可以在不引入与实现完全匹配的签名的情况下定义此专用过载?

on(eventName: string, cb: Function);
on(eventName: "view", cb: (args: {
    foo: {
    }
}) => void);
on(eventName: string, cb: Function) {
}

当我删除它时,我收到此错误:

  

专门的过载签名不能分配给任何人   非专业签名。

1 个答案:

答案 0 :(得分:9)

专门的重载是其他一个重载签名的特殊性(实现签名不可见,因此不计算)。

当您使用专门的重载时,必须至少有一个专用版本“特殊”的非专用签名。

专用签名的返回类型必须是非专用签名的子类型。

简而言之,即使它与实现签名相同,也必须具有重载。