microsoft / microsoft/TypeScript
Proposal: `export as namespace` for UMD module output
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.3k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
Current problem
TypeScript supports UMD output but does not support exporting as a global namespace.
Syntax
NamespaceExportDeclaration:
export as namespace IdentifierPath
Behavior
export var x = 0;
export function y() {}
export default {};
export as namespace My.Custom.Namespace;
// emits:
(function (global, factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports"], factory);
}
else {
global.My = global.My || {};
global.My.Custom = global.My.Custom || {};
global.My.Custom.Namespace = global.My.Custom.Namespace || {};
var exports = global.My.Custom.Namespace;
factory(global.require, exports);
}
})(this, function (require, exports) {
"use strict";
exports.__esModule = true;
exports.x = 0;
function y() { }
exports.y = y;
exports["default"] = {};
});
Note
- This proposal basically follows Babel behavior.
- Importing any module without a module loader will throw in this proposal. A further extension may use global namespaces as Babel does.
- Babel overwrites on the existing namespace whereas this proposal extends the existing one, as TS
namespacedoes. - Rollup has a special behavior where
export default Xworks like CommonJSmodule.exports = Xwhereas this proposal does not.
Prior arts: Babel exactGlobals, Webpack multi part library, Rollup output.name option with namespace support
See also
#8436
#10907
#20990
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
El issue no menciona archivos fuente, pruebas ni puntos de entrada. Empieza comparando el comportamiento propuesto de NamespaceExportDeclaration y UMD con los issues relacionados #8436, #10907 y #20990; se considerará terminado cuando haya un diseño acordado y criterios de implementación para la salida de espacios de nombres globales.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- typescript
- Área
- compilers
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 30/100