microsoft / microsoft/TypeScript
ES6 module immediately exported var clash with local "exports" variable
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 2 T. 4 Std.
- Gemergte PRs (30 T.)
- 132
Beschreibung
TypeScript Version: 3.5.1 (playground), 3.5.3
Search Terms:
es6 module exports object scope declare declaration overwrite
Code
export const a = 1
function b () {
const exports = 2
console.log(a)
}
b()
Expected behavior:
output from babel with es2015 preset
https://babeljs.io/repl#?babili=false&browsers=&build=&builtIns=false&spec=false&loose=false&code_lz=KYDwDg9gTgLgBAYwgOwM7wIZwLxwIwBQAZgK7IIwCWKcARnABQCUcA3gXJ4iunKJLFQ44AJg5ckaCABtgAOmkQA5gwxMCAXwK1mQA&debug=false&forceAllTransforms=false&shippedProposals=false&circleciRepo=&evaluate=false&fileSize=false&timeTravel=false&sourceType=module&lineWrap=false&presets=es2015&prettier=false&targets=&version=7.5.5&externalPlugins=
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.a = void 0;
var a = 1;
exports.a = a;
function b() {
var exports = 2;
console.log(a);
}
b();
Actual behavior:
console.log is referencing the local exports.a instead of the global const a
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.a = 1;
function b() {
var exports = 2;
console.log(exports.a);
}
b();
However, if I split the export const into two, it will work.
const a = 1
export { a }
Playground Link:
http://www.typescriptlang.org/play/?target=1#code/KYDwDg9gTgLgBAYwgOwM7wIZwLxwIwCwAUAGYCuyCMAlinAEZwAUAlHAN7FzeIrpyhIsVDjgAmLjyRoIAG2AA6WRADmTDC2IBfYvVZA
Related Issues: can't find
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 bereitgestellten Code im TypeScript playground und vergleiche dessen ausgegebenes JavaScript mit der im Issue verlinkten Babel-Ausgabe. Verfolge die Behandlung einer unmittelbar exportierten Variable und der verschachtelten lokalen exports-Bindung; fertig ist die Aufgabe, wenn der generierte console.log weiterhin auf den Wert auf Modulebene statt auf die lokale Bindung verweist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript, typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100