Trabalhando com namespaces TypeScript
Os namespaces TypeScript fornecem uma maneira de organizar e gerenciar código dentro de um único escopo global. Os namespaces ajudam a agrupar códigos relacionados, evitando conflitos de nomenclatura e melhorando a manutenibilidade do código. Este guia aborda os conceitos básicos de criação e uso de namespaces TypeScript com exemplos.
O que são namespaces TypeScript?
Namespaces são uma maneira de encapsular código em TypeScript. Eles permitem agrupar funções, classes e variáveis relacionadas em uma única unidade lógica, o que pode ser útil em projetos grandes para evitar colisões de nomes e melhorar a organização do código.
Criando um namespace
Para criar um namespace, use a palavra-chave namespace
seguida por um nome e um bloco de código. Dentro do bloco namespace, defina as funções, classes ou variáveis que devem fazer parte desse namespace.
// mathUtils.ts
namespace MathUtils {
export function add(a: number, b: number): number {
return a + b;
}
export function subtract(a: number, b: number): number {
return a - b;
}
}
Neste exemplo, o namespace MathUtils
contém duas funções, add
e subtract
, ambas exportadas para uso fora do namespace.
Usando um namespace
Para usar o código dentro de um namespace, prefixe o nome do namespace seguido por um ponto e o nome do membro. Certifique-se de que o namespace esteja disponível no escopo em que está sendo usado.
// app.ts
/// <reference path="mathUtils.ts" />
const sum = MathUtils.add(5, 3);
const difference = MathUtils.subtract(5, 3);
console.log(`Sum: ${sum}`);
console.log(`Difference: ${difference}`);
Neste exemplo, o namespace MathUtils
é referenciado usando uma diretiva de barra tripla '<reference path="mathUtils.ts" />'
, permitindo acesso às suas funções no arquivo app.ts
.
Espaços de nomes aninhados
Namespaces podem ser aninhados dentro de outros namespaces, o que ajuda a organizar melhor o código. Namespaces aninhados são acessados encadeando os nomes dos namespaces com pontos.
// shapes.ts
namespace Shapes {
export namespace Circle {
export function area(radius: number): number {
return Math.PI * radius * radius;
}
}
export namespace Square {
export function area(side: number): number {
return side * side;
}
}
}
Neste exemplo, o namespace Shapes
contém dois namespaces aninhados: Circle
e Square
, cada um com sua própria função area
.
Usando namespaces aninhados
Para acessar membros de namespaces aninhados, use a notação de ponto para encadear os nomes dos namespaces.
// app.ts
/// <reference path="shapes.ts" />
const circleArea = Shapes.Circle.area(5);
const squareArea = Shapes.Square.area(4);
console.log(`Circle Area: ${circleArea}`);
console.log(`Square Area: ${squareArea}`);
Neste exemplo, os namespaces Circle
e Square
são acessados por meio do namespace Shapes
, demonstrando como namespaces aninhados podem ser utilizados.
Conclusão
Os namespaces TypeScript são uma ferramenta poderosa para organizar e gerenciar código. Ao usar namespaces, o código pode ser agrupado logicamente, reduzindo o risco de conflitos de nomenclatura e melhorando a manutenibilidade. Entender como criar e usar namespaces, incluindo namespaces aninhados, é essencial para o desenvolvimento efetivo do TypeScript.