microsoft / microsoft/TypeScript
Inconsistent error messages with circular base type argument
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
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.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduzieren Sie die Abweichung über den bereitgestellten Playground Link mit der im Bericht angegebenen TypeScript-master-Revision und verfolgen Sie anschließend das Compilerverhalten für das zirkuläre Basistypargument. Als erledigt gilt die Aufgabe, wenn die Fälle bar und baz eine konsistente Diagnose erhalten, die darauf hinweist, dass zirkuläre Typannotationen beteiligt sind, statt der derzeit unterschiedlichen Ergebnisse.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100