Mesclagem de declaração é TypeScript combinando múltiplas declarações com o mesmo nome em uma única definição. Interfaces, namespaces e algumas outras construções mesclam automaticamente.
Mesclagem de interface
interface Box { : ; }
{ : ; }
Mesclagem de declaração é TypeScript combinando múltiplas declarações com o mesmo nome em uma única definição. Interfaces, namespaces e algumas outras construções mesclam automaticamente.
interface Box { : ; }
{ : ; }
Assim é como você adiciona tipos a bibliotecas ou globais que você não possui:
// Add a custom property to Express's Request
declare global {
namespace Express {
interface Request { user?: { id: string }; } // merges into Express.Request
}
}
request.user; // ✅ now typed everywhere
// Augment a module
declare module "some-lib" {
interface Options { newOption: boolean; }
}
Porque o Request/Options da biblioteca é uma interface, sua declaração mescla nele em vez de entrar em conflito — permitindo que você estenda com segurança tipos que não pode editar.
function greet() {}
namespace greet { export const version = "1.0"; }
greet.version; // "1.0" — namespace merged onto the function
type não pode fazer issotype A = { x: number };
type A = { y: number }; // ❌ Error: duplicate identifier
Aliases de tipo são únicos; apenas interfaces (e namespaces) mesclam — uma razão chave para usar interface para formas de API pública extensíveis.
Mesclagem de declaração é o mecanismo por trás de aumento de módulo — estendendo requisições Express, adicionando a window, customizando tipos de biblioteca, sistemas de tematização.
É conhecimento essencial para digitar aplicativos reais onde você deve adaptar tipos que não controla, sem dividi-los.