microsoft / microsoft/TypeScript
Inconsistent error messages with circular base type argument
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.4k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
Description
I noticed here that a type argument to a base class can reference property types in the same class, so I wondered what would happen if I tried to reference an inherited property type that itself depends on the type argument. To its credit, the compiler didn't crash, but the errors I got didn't make much sense.
TypeScript Version: master (e1a4c2779f93c8389d1589e543920a61771e97ec)
Search Terms: circular self referential base extends type argument property same class lookup type
Code
class Super<T> {
foo!: T;
}
class Sub extends Super<Sub["bar"]> {
bar!: Sub["foo"]; // Actual: Error: "Property 'foo' does not exist on type 'Sub'."
baz!: Sub["foo"]; // Actual: No error
}
Expected behavior: An error that indicates that circular type annotations are involved.
Actual behavior: As marked.
Playground Link: link
Related Issues: None found, but this is hard to search for.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Reproduisez la divergence à partir du Playground Link fourni en utilisant la révision master de TypeScript indiquée dans le rapport, puis suivez le comportement du compilateur pour l’argument de type de base circulaire. La tâche est considérée comme terminée lorsque les cas bar et baz reçoivent un diagnostic cohérent indiquant que des annotations de type circulaires sont impliquées, plutôt que les résultats actuellement incohérents.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100