microsoft / microsoft/TypeScript
Uncaught compiler error: Block-scoped variable from import used before its declaration.
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 132
Description
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.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire avec tsc le cas TypeScript 2.4 signalé et comparez-le avec la variante const ou let décrite dans l’issue. Suivez la manière dont le compilateur traite l’alias d’importation et le namespace référencé avant leur déclaration. Le travail est terminé lorsque le code signalé reçoit le diagnostic attendu à la compilation, au lieu de produire du JavaScript qui échoue à l’exécution.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript, typescript
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100