Modules, TypeScript Modules (módulos en TypeScript)

Hay tres factores a considerar cuando escribimos módulos en TypeScript.

  • La syntaxis: Que sintaxis quiero utilizar para importar/exportar cosas.
  • La resolucion del módulo: ¿Cuál es la relación entre los nombres de los módulos (o sus rutas) y los archivos en disco?
  • Módulo de salida objetivo: ¿Cómo debería lucir el archivo JavaScript generado por mi módulo?

Sintaxis de ES

// @filename: hola-mundo.js
export default function holaMundo() {
    console.log("Hola, Mundo!");
}

Después esto se importa de esta forma:

import hola from "./hola-mundo.js";

Además de la expresión default export, podemos exportar mas variables, funciones, clases, types, etc. utilizando export adicionales omitiendo la palabra default.

// @filename: math.js
export const pi = 3.1416;
export default class MiClase {}

Esto puede ser utilizado en otro módulo de la siguiente forma:

import { pi } from "./math";

Uso de aliases

También es posible utilizar un alias al momento de importar desde otros módulos.

import { pi as valorDePi } from "./math";

Se pueden combinar estas formas de importar.

import MiClase, { pi } from "./math";

O incluso se pueden importar todos los elementos exportables dentro de otro contenedor o namespace.

import * as math from "./math";

console.log(math.pi); // <- 3.1416

Un caso mas es cuando importamos un módulo sin utilizar ninguno de los elementos que lo componen.

import "./math";