0Pricing
TypeScript Academy · Aula

Namespaces versus módulos: uso moderno

Entenda por que os módulos são preferidos aos namespaces

Namespaces versus módulos: uso moderno é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 4 aulas no total.

Boas-vindas

O TypeScript originalmente tinha espaços de nomes (anteriormente chamados de módulos internos) para organizar o código. O TypeScript moderno usa módulos ES. Nesta lição, você aprenderá quando cada opção é apropriada.

O que é um espaço de nomes

Um espaço de nomes é uma forma específica do TypeScript de agrupar código relacionado em um escopo nomeado usando a palavra-chave `namespace`.
namespace Geometry {
  export interface Point { x: number; y: number; }
  export function distance(a: Point, b: Point): number {
    return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
  }
}

Acessando membros de um espaço de nomes

Acesse os membros de um espaço de nomes por meio do nome dele, usando a notação de ponto.
const p1: Geometry.Point = { x: 0, y: 0 };
const p2: Geometry.Point = { x: 3, y: 4 };
const d = Geometry.distance(p1, p2); // 5

Espaços de nomes aninhados

Os espaços de nomes podem ser aninhados.
namespace App {
  export namespace Models {
    export interface User { name: string; }
  }
}
const u: App.Models.User = { name: 'Alice' };

Mesclagem de espaços de nomes

Os espaços de nomes permitem a mesclagem de declarações: duas declarações de espaço de nomes com o mesmo nome são mescladas.
namespace Validation {
  export function validate(s: string): boolean { return s.length > 0; }
}
namespace Validation {
  export function sanitize(s: string): string { return s.trim(); }
}

Por que os módulos são preferidos

Os módulos ES são o padrão do JavaScript. Eles são compatíveis com todos os empacotadores, permitem a eliminação eficiente de código não utilizado e funcionam nativamente em navegadores modernos e no Node.js.

O equivalente em módulos a um espaço de nomes

No TypeScript moderno, um espaço de nomes se torna simplesmente um arquivo. Exporte o que deseja tornar público e mantenha o restante privado.
// geometry.ts
export interface Point { x: number; y: number; }
export function distance(a: Point, b: Point): number {
  return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
}

Espaços de nomes ainda usados em arquivos de declaração

Os espaços de nomes ainda são amplamente usados em arquivos de declaração .d.ts para bibliotecas globais, como os tipos do DOM e do Node.js, porque ampliam o escopo global.
// node.d.ts
declare namespace NodeJS {
  interface ProcessEnv { NODE_ENV?: 'development' | 'production'; }
}

Referências de barra tripla (legado)

Antes dos módulos ES, as diretivas de barra tripla referenciavam outros arquivos. Hoje, as inclusões do tsconfig e as importações de módulos as substituem.
/// <reference types="node" />
/// <reference path="./other.d.ts" />

Quando ainda usar espaços de nomes

Use espaços de nomes: (1) em arquivos de declaração para tipos globais ambientais; (2) ao ampliar espaços de nomes globais existentes de bibliotecas.

Migrando de espaços de nomes para módulos

Substitua `namespace Foo {}` por um arquivo de módulo. Substitua `/// ` por importações. A equipe do TypeScript documentou esse caminho de migração.

Verificação rápida

No TypeScript moderno, qual é a substituição recomendada para os espaços de nomes?

Recapitulação

Os espaços de nomes organizam o código em um escopo nomeado, mas são considerados legados no TypeScript moderno. Use módulos ES (import/export) no código de aplicações. Os espaços de nomes continuam úteis em arquivos de declaração para ampliar tipos globais.

Perguntas Frequentes

A aula “Namespaces versus módulos: uso moderno” é grátis?

Sim — o texto completo de “Namespaces versus módulos: uso moderno” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 4 aulas no total.

O que vou aprender em “Namespaces versus módulos: uso moderno”?

Entenda por que os módulos são preferidos aos namespaces Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar TypeScript Academy?

Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Namespaces versus módulos: uso moderno”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de TypeScript Academy?

Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Sintaxe de módulos ES: import e export
  2. Reexportações e arquivos de agregação
  3. Importações e exportações somente de tipos
  4. Namespaces versus módulos: uso moderno
← Voltar para TypeScript Academy