commonjs - TypeScript y opción de módulo configurada a es2015/es2020/esnext
Este es mi archivo tsconfig.json:
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
}
}
y mi archivo test.ts:
module.exports.a = 4;
Luego ejecuto yarn tsc y, sorprendentemente, en mi archivo de salida test.js todavía tengo
module.exports.a = 4;
Pregunta: ¿Por qué el contenido del archivo de salida no está usando módulos esnext? ¿Por qué no es export const a=4?
Por cierto, si voy por otro camino: module configurado en commonjs y test.ts con export const a=4, el archivo de salida se genera correctamente con módulos cjs.
¿Por qué TypeScript puede compilar módulos de ES a CJS y no de CJS a ES? Si de hecho TS no puede hacerlo, entonces ¿por qué tenemos la opción de módulo de todos modos?