microsoft / microsoft/TypeScript
3.6 regression: unions of callable types involving `this` types
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.4k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
TypeScript Version: Version 3.6.3, Version 3.7.0-dev.20190911
Search Terms: intersect function
Code
class A {
public uniqueToA = "a";
public getString(this: A): string {
return "a";
}
}
class B {
public uniqueToB = "b";
public getString(this: B): string {
return "b";
}
}
function f(model: A | B): string {
return model.getString();
}
Expected behavior:
In Typescript 3.5.3, the model.getString() in function f has no error.
Actual behavior:
In Typescript 3.6.3 and 3.7.0-dev.20190911, the code above gets the following errors:
index.ts:18:12 - error TS2684: The 'this' context of type 'A | B' is not assignable to method's 'this' of type 'A & B'.
Type 'A' is not assignable to type 'A & B'.
Property 'uniqueToB' is missing in type 'A' but required in type 'B'.
18 return model.getString();
~~~~~
index.ts:10:12
10 public uniqueToB = "b";
~~~~~~~~~
'uniqueToB' is declared here.
Related Issues: #32506
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
Reproduziere das index.ts-Beispiel mit TypeScript 3.5.3, 3.6.3 und der referenzierten 3.7.0-dev-Version, um die Regression zu bestätigen. Verfolge den Typprüfpfad für model.getString() und Vereinigungen aufrufbarer Typen mit this-Parametern; abgeschlossen ist die Aufgabe, wenn das Beispiel ohne den TS2684-Fehler kompiliert, während die relevanten this-Prüfungen erhalten bleiben.
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