tutorial sumar numeros typescript ecmascript-6 es6-modules

tutorial - sumar dos numeros en typescript



Cómo construir un único módulo ES6 a partir de varios archivos TypeScript(para una biblioteca de frontend) (2)

La forma correcta es crear un archivo de barril que reexportará los módulos.

// foo/a.ts export function a() {} // foo/b.ts export function b() {} // foo/index.ts export {a} from ''./a''; export {b} from ''./b'';

Luego en tu consumidor:

import {a, b} from ''./foo''; a(); b();

El código de mi biblioteca de frontend está dividido en varios archivos fuente.

Ejemplo:

// a.ts function a() {} // b.ts function b() {} // main.ts const myLib = { a: a, b: b }

Necesito construir un módulo ES6 (es decir, un archivo JavaScript) que exporte solo myLib , como la exportación predeterminada.

Veo dos opciones. El primero:

  1. Ejecute tsc para compilar cada archivo en JavaScript;
  2. Concatenar todos los archivos JS generados en un único archivo my-lib.js ;
  3. Agregue el código que necesita ES6 ( export … ).

El segundo:

  1. Concatenar todos los archivos de TypeScript en un solo archivo my-lib.ts ;
  2. Adjunte la exportación: export default myLib ;
  3. Ejecute tsc en el archivo concatenado.

Ambas opciones son feas y pierden el archivo del map .

¿Hay una mejor manera de hacer eso?


Agrego una respuesta porque hoy la forma correcta para una biblioteca de frontend es usar Rollup .

Primero, escriba los módulos de ES6, import y export :

// file-a.ts export function a() {} // file-b.ts export function b() {} // main.ts export { a } from "./file-a" export { b } from "./file-b"

Luego, compile el código a JavaScript usando tsc con el module opción establecido en "es6" .

Luego, deje que Rollup cree un paquete plano a partir del código JavaScript. Para el código anterior, Rollup genera este paquete:

function a() {} function b() {} export { a, b };

Ver también:

Aviso: no encontré una solución fácil para el archivo de definición .d.ts . Todavía concateno archivos con un script Node.js para generar tipos exportados en un solo archivo de definición de TypeScript.