Uncaught compiler error: Block-scoped variable from import used before its declaration.

Offen
#17,308 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Bereich
compilers

Rechercherichtung

Beginne damit, den gemeldeten TypeScript 2.4-Fall mit tsc zu reproduzieren und ihn mit der im Issue beschriebenen const- oder let-Variante zu vergleichen. Verfolge, wie der Compiler den Import-Alias und seinen referenzierten Namespace vor der Deklaration behandelt. Fertig ist die Arbeit, wenn der gemeldete Code die erwartete Diagnose zur Compile-Zeit erhält, statt JavaScript zu erzeugen, das zur Laufzeit fehlschlägt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Bug Domain: Binder

TypeScript Version: 2.4.0 / nightly (2.5.0-dev.201xxxxx)

Code

Input Typescript

namespace A {
    export namespace B {
        export class C {
            constructor()
            {
                console.log("Hello World");
            }
        }
    }
}

import myA_B = myA.B;
import myA = A;

new myA_B.C();

Output JavaScript from tsc

var A;
(function (A) {
    var B;
    (function (B) {
        var C = (function () {
            function C() {
                console.log("Hello World");
            }
            return C;
        }());
        B.C = C;
    })(B = A.B || (A.B = {}));
})(A || (A = {}));
var myA_B = myA.B;
var myA = A;
new myA_B.C();

Expected behavior:
Expected the typescript compiler error Block-scoped variable 'myA' used before its declaration.

Actual behavior:
Runtime error of Uncaught TypeError: Cannot read property 'B' of undefined

Comments
The typescript compiler will catch this if I use const or let keywords instead, so I expected the same error handling for import in this case.

My team prefers using import over const or let when we can for performance of not pulling in javascript code from external files when we are only referencing types.

Vorherrschende Sprache
Go
Sterne
111k
Forks
14.4k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus microsoft/TypeScript

Alle Issues in microsoft/TypeScript

Ähnliche Issues

Weitere Issues zu Go

Neue Issues direkt in Ihr Postfach

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