microsoft / microsoft/TypeScript
--esModuleInterop: Strange incompatibility between correct and incorrect import of same type
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: master
Code
b.d.ts
declare class C {
f: this;
}
declare namespace C {}
export = C;
a.ts
import * as C1 from "./b";
import C2 = require("./b");
function f(t: (c: C1) => void): void {
t(new C2());
}
Expected behavior:
Error at import * as C1.
Actual behavior:
No error at the import declaration. Error at new C2():
src/a.ts(5,7): error TS2345: Argument of type 'C' is not assignable to parameter of type 'C'.
Types of property 'f' are incompatible.
Type 'C' is not assignable to type 'this'.
(possibly related: #20704)
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 den Bericht mit b.d.ts und a.ts genau wie gezeigt und führe dann den TypeScript checker aus, um die Diagnose bei new C2() zu beobachten. Beginne damit nachzuverfolgen, wie import * as C1, import-equals require, export = und die this-typisierte Eigenschaft verglichen werden. Die Aufgabe ist erledigt, wenn die Inkompatibilität konsistent behandelt wird und die erwartete Position oder das erwartete Verhalten der Diagnose durch einen Regressionstest abgedeckt ist.
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
- Klar beschrieben
- Anfängerfreundlichkeit
- 35/100