Sobrecarga "especializada" en Typescript
¿Es posible definir esta sobrecarga especializada sin introducir la firma que coincide exactamente con la implementación?
on(eventName: string, cb: Function);
on(eventName: "view", cb: (args: {
foo: {
}
}) => void);
on(eventName: string, cb: Function) {
}
Cuando lo elimino recibo este error:
La firma de sobrecarga especializada no se puede asignar a ninguna firma no especializada.
Respuesta #1
Las sobrecargas especializadas son una especialización de una de las otras firmas de sobrecarga (la firma de implementación no es visible, por lo que no cuenta).
Cuando usas una sobrecarga especializada, debe haber al menos una firma no especializada que la versión especializada "haga especial".
El tipo de retorno de la firma especializada tiene que ser un subtipo de la firma no especializada.
Entonces, en resumen, tienes que tener la sobrecarga incluso si es idéntica a la firma de la implementación.