Pourquoi ai-je une erreur "Type 'AbstractPopup' is not assignable to type T" sur le retour de la méthode popupFactory(...) ? Veuillez ignorer les autres erreurs, il s'agit juste d'un code de test pour mieux comprendre le fonctionnement des génériques.
function popupFactory<T extends AbstractPopup>(popupType: PopupType, data: {}): T
{
var popup: AbstractPopup;
switch (popupType)
{
case PopupType.ConcretePopup:
{
popup = new ConcretePopup();
break;
}
}
return popup;
}
abstract class AbstractPopup
{
type: PopupType;
}
class ConcretePopup extends AbstractPopup{}
var p = popupFactory<ConcretePopup>(PopupType.ConcretePopup, {});