microsoft / microsoft/TypeScript
tsc does not use amd-module name when emitting dynamic imports
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.4k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Reproduce el problema con Scripts/foo.ts, Scripts/bar.ts y tsconfig.json; después, inspecciona el punto de entrada del compilador para la emisión de importaciones dinámicas de AMD. Compara GeneratedScripts/bar.js con la salida esperada; se considera terminado cuando la llamada require generada usa el nombre de módulo AMD personalizado customNameFoo de foo en lugar de './foo'.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- typescript
- Área
- compilers
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 48/100