microsoft / microsoft/TypeScript
tsc does not use amd-module name when emitting dynamic imports
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.3.0-dev.20190118
Search Terms: amd-module, optional, dynamic, directive
Code
Scripts/foo.ts
///<amd-module name="customNameFoo" />
export function hello() {
console.log('hello world');
}
Scripts/bar.ts
///<amd-module name="customNameBar" />
async function myFunction(): Promise<void> {
//Dynamically import foo
var fooModule = await import('./foo');
fooModule.hello();
}
tsconfig.json
{
"compileOnSave": true,
"compilerOptions": {
"target": "es5",
"outDir": "GeneratedScripts",
"module": "amd",
"lib": [
"es2015.promise",
"dom",
"es5",
"scripthost"
]
},
"include": [
"Scripts/**/*"
],
"exclude": [
"GeneratedScripts"
]
}
would expect that the call to require would use the amd-module name for foo ("customNameFoo") and not "./foo". (If we non-dynamically imported foo, then the generated 'define' would refer to foo by it's amd-module name)
GeneratedScripts/bar.js
//...
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, new Promise(function (resolve_1, reject_1) { require(['./foo'], resolve_1, reject_1); })];
case 1:
fooModule = _a.sent();
fooModule.hello();
return [2 /*return*/];
}
});
Expected behavior: The generated amd code for a dynamic import should use the name of the module specified in the amd-module directive
Actual behavior: The generated code for the dynamic import uses relative path to the module
Related Issues:
https://github.com/Microsoft/TypeScript/pull/1158
https://github.com/Microsoft/TypeScript/issues/28760
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 das Problem mit Scripts/foo.ts, Scripts/bar.ts und tsconfig.json und untersuche anschließend den Compiler-Einstiegspunkt für die Ausgabe dynamischer AMD-Imports. Vergleiche GeneratedScripts/bar.js mit der erwarteten Ausgabe; abgeschlossen ist die Aufgabe, wenn der generierte require-Aufruf den benutzerdefinierten AMD-Modulnamen customNameFoo von foo anstelle von './foo' verwendet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 48/100