microsoft / microsoft/TypeScript

--esModuleInterop: Strange incompatibility between correct and incorrect import of same type

Offen
#21,653 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Domain: Error Messages Experience Enhancement In Discussion Suggestion
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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.