TypeScript Módulos Intermediário
Módulos e declarações
Em TypeScript, módulos são arquivos que podem exportar e importar declarações (variáveis, funções, classes, tipos). A partir do ES2015, cada arquivo é um módulo se tiver import ou export. Isso permite organizar o código em partes reutilizáveis e manter o escopo isolado.
Além de valores, TypeScript permite exportar e importar tipos (interfaces, type aliases, enums). Para deixar claro que uma importação é apenas de tipo (e que será removida na compilação), usamos import type { ... } from '...'. Isso evita dependências desnecessárias no runtime e melhora a performance.
Arquivos de declaração (.d.ts) descrevem a forma de código JavaScript já existente, sem gerar código. Eles são essenciais para usar bibliotecas de terceiros que não foram escritas em TypeScript. O compilador lê esses arquivos para checar tipos, mas eles não aparecem no JavaScript final.
Neste card, você vai aprender a organizar módulos com export/import, usar import type, criar declarações .d.ts e lidar com tipos de terceiros.
Pontos-chave
- Use
exportpara expor valores e tipos de um módulo; useimportpara consumi-los. import typeimporta apenas tipos e é removido na compilação, evitando dependências de runtime.- Arquivos
.d.tsdescrevem tipos de código JavaScript existente, sem gerar saída. - Para bibliotecas de terceiros sem tipos, instale
@types/nomeou crie um.d.tslocal. - Prefira
export typeeimport typepara deixar explícito o que é tipo e o que é valor.
// modulo_matematica.ts
// Exporta uma função e um tipo
export function somar(a: number, b: number): number {
return a + b;
}
export type Par = [number, number];
// modulo_principal.ts
// Importa apenas o tipo usando import type
import type { Par } from './modulo_matematica';
// Importa a função normalmente
import { somar } from './modulo_matematica';
// Usa o tipo importado
const coordenada: Par = [2, 3];
console.log(somar(...coordenada)); // 5
// Exemplo de declaração .d.ts para uma biblioteca externa
// (normalmente em um arquivo separado, ex: tipos.d.ts)
// declare module 'biblioteca-externa' {
// export function funcaoExterna(x: number): string;
// }
// Simulando o uso de uma biblioteca de terceiros com tipos
// (aqui usamos uma declaração local para fins didáticos)
declare module 'minha-lib' {
export function dobro(n: number): number;
}
import { dobro } from 'minha-lib';
console.log(dobro(10)); // 20