ES6 Modules
Export Declarations
Es posible asignarle nombres a las declaraciones de módulos. Es posible asignarle un nombre al miembro exportado haciendo uso de las 2 palabras reservadas export y as
interface IUsuario { ... } function loguear(usuario: IUsuario, recordar: boolean) { ... } export { IUsuario, loguear as loguearFunction }; // loguear se exporta con el nombre loguearFunction
Por otro lado es posible utilizar las clausulas import y as para especificar diferentes nombres locales a las importanciones (esto es opcional).
import { IUsuario, loguearFunction as loguearLocal } from "./usuario"; var s = read(loguearLocal);
Otra alternativa que tenemos es la capacidad de importar namespace, mediante esta técnica podremos importar todo un modulo completo.
Si bien es una técnica poderosa, siempre es mejor tener un control preciso de los módulos y miembros que estamos importando.
import * as iu from "./usuario"; var s = io.read(iu.loguearFunction);
Re-exporting
Mediante la clausula from somos capaces de re exportar un modulo, desde un archivo a otro.
export { read, write, standardOutput as stdout } from "./inout";
Mediante la utilización de * vamos a ser capaces de realizar reexportaciones de exportaciones de otros módulos. Esto es muy útil cuando queremos crear módulos que se encarguen de simplemente reexportar a otros módulos, para generar contenedores de exportación básicamente.
export function transform(s: string): string { ... } export * from "./mod1"; export * from "./mod2";
Default Export
Podemos definir la exportación por defecto de un módulo.
export default class Greeter { sayHello() { console.log("Greetings!"); } }
Y a su vez estas mismas pueden ser importadas, mediante importaciones por defecto.
import Greeter from "./greeter"; var g = new Greeter(); g.sayHello();
Bare Import
Podemos utilizar esta opcion cuando realizamos una importación de un modulo “únicamente” por sus efectos secundarios.
import "./polyfills";