JavaScriptMódulos e Errosdesafio

Dependency injection com módulos

Em aplicações reais, objetos frequentemente dependem de outros objetos. Gerenciar essas dependências manualmente leva a código acoplado e difícil de testar. Um container de injeção de dependência (DI) resolve isso: você registra fábricas de objetos, e o container fornece instâncias já com suas dependências resolvidas automaticamente, como em frameworks Angular ou NestJS.

O PROBLEMA

Implemente DI container: register(nome, factory), get(nome). Resolução automática.

EXEMPLO

container.register("db", () => criarDB());
container.register("userService", (userRepo) => criarUserService(userRepo));
const service = container.get("userService");

SOBRE O CONCEITO

O exercício pede um container DI com resolução automática de dependências. A ideia é usar um Map para armazenar fábricas por nome e um cache de instâncias. No método get, ao solicitar um serviço, a fábrica é chamada passando como argumentos os resultados de get para cada dependência. O erro comum é resolver apenas dependências diretas, ignorando as transitivas (ex.: se userService depende de userRepo que depende de db, ao obter userService você também deve obter userRepo e db automaticamente). Use try/catch para capturar erros de dependências não registradas e lance um erro com throw.

RESOLUÇÃO

Mais exercícios de Módulos e Erros

JSM003 · BásicoTipos de erroJSM005 · BásicoError propertiesJSM006 · BásicoExport nomeadoJSM008 · BásicoImport * as
Ver todos os exercícios de JavaScript