Módulos

Módulos em TypeScript são arquivos que contêm código com exportações e importações, permitindo organizar, reutilizar e encapsular funcionalidades. Qualquer arquivo que contenha uma declaração import ou export é considerado um módulo. O sistema de módulos segue a especificação do ECMAScript 2015 (ES6) e suporta vários padrões de exportação/importação.

Exportação de módulos

Exportações Nomeadas (Named Exports)

Permitem exportar várias variáveis, funções ou classes de um mesmo módulo. Devem ser importadas com o mesmo nome ou renomeadas.

// mathUtils.ts
export function somar(a: number, b: number): number {
return a + b;
}

export const PI = 3.14159;

export class Circulo {
constructor(public raio: number) {}
}

Exportação Padrão (Default Export)

Permite exportar uma única funcionalidade principal, importada sem chaves.

// calculadora.ts
export default function calcularArea(raio: number): number {
return 3.14 * raio * raio;
}

Importação de módulos

Importação Nomeada

Usa chaves com os nomes exatos das exportações.

import { somar, PI, Circulo } from "./mathUtils";

console.log(somar(5, 3)); // 8
console.log(PI); // 3.14159
const c = new Circulo(10);

Importação do Export Padrão

Importa sem chaves, podendo dar qualquer nome ao import.

import calcularArea from "./calculadora";
console.log(calcularArea(5)); // 78.5

Importando Tudo como Namespace

Importa todas exportações nomeadas sob um único identificador.

import * as math from "./mathUtils";

console.log(math.PI);
console.log(math.somar(2, 3));
const c = new math.Circulo(7);

Importar Apenas para Efeitos Colaterais

Quando o módulo não exporta nada ou apenas altera o ambiente global.

import "./polyfills";

Renomeando Imports e Exports

import { somar as add } from "./mathUtils";
console.log(add(1, 2)); // 3

Reexportação (Re-export)

Permite agrupar vários módulos e exportá-los juntos.

// index.ts
export { somar, PI, Circulo } from "./mathUtils";
export { default as calcularArea } from "./calculadora";

Módulos e Configuração TypeScript

A geração de código depende do target e do módulo configurados (tsconfig.json), podendo gerar CommonJS para Node.js, ES Modules para navegadores modernos, AMD, UMD, etc.

Resumo

  • Módulos são arquivos com import/export.
  • Exportações podem ser nomeadas ou padrão.
  • Imports usam chaves para nomeadas e nome livre para padrão.
  • É possível importar tudo sob um namespace.
  • Reexportações permitem criar pontos únicos de exportação.