microsoft / microsoft/TypeScript

Inconsistent error messages with circular base type argument

Ouverte
#27,458 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

In Discussion Suggestion
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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. 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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.