Uncaught compiler error: Block-scoped variable from import used before its declaration.
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
- Tech-Stack
- javascript, typescript
- 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
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
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus microsoft/TypeScript
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
microsoft/TypeScript#64322 · 2 Kommentare · 1 Reaktion · 2 zugewiesene Personen ·
-
Possible Improvement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
microsoft/TypeScript#64278 · 1 Kommentar · 1 Reaktion ·
-
Docs
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
microsoft/TypeScript#64118 · 1 Kommentar ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
microsoft/TypeScript#64094 ·
-
Docs
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
microsoft/TypeScript#63959 · 5 Kommentare ·
Alle Issues in microsoft/TypeScript
Ähnliche Issues
-
optimization optimization:agents-md-curator
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
githubnext/gh-aw-cao#13143 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
blinklabs-io/bursa#904 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
yanet-platform/ipfw-go#129 ·
-
bug confmap/provider/googlesecretmanagerprovider needs triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
open-telemetry/opentelemetry-collector-contrib#51273 · 2 Kommentare ·
-
bug: AI Gateway client filter lists "Unknown" twice when NULL and literal Unknown clients coexist Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 90/100