El compilador de TypeScript crea un archivo JavaScript vacío en WebStorm
Es mi experiencia inicial con TypeScript. Tomé una aplicación simple de JavaScript que consistía en dos archivos y los convertí a TypeScript.
Un archivo accounts.ts contiene el código principal, el otro fiat.ts es un archivo de soporte que exporta un módulo Fiat con algunos miembros exportados. Después de algunas ediciones ya no recibí más mensajes de error del compilador de TypeScript.
Utilizo un archivo tsconfig.json para controlar la compilación:
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"outFile": "main.js",
"target": "ES5",
"sourceMap": true
},
"files": [
"accounts.ts",
"fiat.ts"
]
}
Debería crear un archivo main.js que contenga el código. Pero esto contiene después de una compilación exitosa solo una línea:
//# sourceMappingURL=main.js.map
No se incluye ningún otro código. Descubrí por accidente que si elimino la línea
import {Fiat} from './fiat';
en el archivo accounts.ts entonces el compilador incluye el código de accounts.ts en main.js pero no el código de fiat.ts y además el compilador de TypeScript muestra mensajes de error por cada referencia a Fiat en accounts.ts.
No puedo averiguar cómo crear un archivo JavaScript a partir de solo dos archivos TypeScript. ¡Cualquier ayuda sería apreciada!
Lo que encontré después de algunas investigaciones: El concepto de módulo en Typescript se puede manejar de dos maneras diferentes: módulos internos y externos. Mis dificultades surgieron de no entender realmente esto. Los módulos externos funcionan con un cargador de módulos dinámico. Tú los import. Solo los módulos internos pueden agruparse en uno (o varios) archivo(s) de Javascript que se cargan con el HTML a través de la etiqueta script. Para trabajar con módulos internos necesitas líneas /// <reference path="./name.ts" /> en los archivos que los referencian. Otras diferencias de sintaxis entre módulos internos y externos son menores hasta donde sé.
Respuesta #1
Si quieres usar módulos (módulos externos) y compilarlos en un solo archivo, debes configurar module al objetivo amd o system (suponiendo que tengas TypeScript 1.8) en tu tsconfig.json.
Al eliminar importación/exportación no utilizas módulos y, por lo tanto, outFile funciona.