Je n'arrive pas à faire en sorte que le compilateur TypeScript ne m'attriste pas. J'ai un contrôleur qui a un tableau de classes, pas l'instance de la classe, mais la classe elle-même. Tout cela va s'étendre de la même base, UnitView
. Pour une raison quelconque, je reçois une erreur si mon TitleView
n'accepte pas les génériques, mais je ne reçois aucune erreur si c'est le cas.Tableau TypeScript de classes génériques
Je ne comprends pas pourquoi TitleView
aurait besoin d'accepter des génériques car il transmet explicitement le type de modèle au UnitView
. Quelqu'un peut-il expliquer ou voir quelque chose que je fais mal?
code:
class Model { }
class View<TModel extends Model> {
private model: TModel;
}
class UnitView<TModel extends Model> extends View<TModel> { }
class TitleView extends UnitView<Model> { }
class Controller {
private ViewClass: typeof UnitView;
private ViewClasses: typeof UnitView[] = [
TitleView
]
}
Et here est un lien direct vers aire de jeux tapuscrit si vous voulez le tester, il
Alors, quelle serait la bonne façon d'écrire ce que je veux exprimer le tableau sera un tableau de classes qui se prolongent hors de UnitView? – jas7457
Vous devrez conserver le générique. Ajouté pour répondre comme 'more' – basarat
J'espérais qu'il y aurait un autre moyen, car TitleView ne devrait vraiment pas accepter les génériques, car c'est la fin de la ligne et le modèle est bien défini à ce moment-là. Je peux juste changer les typings à un tableau de n'importe où à la place. Cette conception me semble imparfaite, ou peut-être que je ne comprends pas tout à fait. Merci pour l'aide. – jas7457