This page is also available in English.

Continue in English

Container

Container è l'unica classe che TinyDI ha. Un'istanza possiede un insieme di registrazioni, indicizzate per token.

ts
const container = new Container();

registerInstance

Registra un'istanza già creata. È sempre trattata come Singleton — ogni chiamata a resolve() restituisce esattamente quell'oggetto.

ts
const ConfigToken = createToken<Config>('Config');
container.registerInstance(ConfigToken, { apiUrl: 'https://example.com' });

registerFactory

Registra una factory usata per costruire il servizio in modo lazy, alla prima risoluzione. La factory riceve il container stesso, così può risolvere le proprie dipendenze in modo esplicito.

ts
container.registerFactory(
  UserServiceToken,
  (c) => new UserService(c.resolve(UserRepositoryToken)),
);

Il terzo argomento, opzionale, è un ServiceLifetime — di default è Singleton.

resolve

Risolve il servizio registrato sotto un token, completamente tipizzato senza generic esplicito.

ts
const userService = container.resolve(UserServiceToken);

Casi limite

Lancia ResolutionError se il token non è mai stato registrato, e CircularDependencyError se risolverlo richiederebbe di risolvere se stesso di nuovo — vedi API Reference per la forma esatta degli errori.

has, remove, clear

Gestisci direttamente l'insieme delle registrazioni: has(token) controlla se un token è registrato, remove(token) rimuove una singola registrazione, e clear() le rimuove tutte.

ts
container.has(ConfigToken); // true
 
container.remove(ConfigToken);
container.has(ConfigToken); // false
 
container.clear(); // rimuove tutte le registrazioni

Sostituire una registrazione

Registrare un token già registrato lancia RegistrationError, di proposito. Chiama prima remove() — utile deliberatamente per sostituire un'implementazione finta tra un test e l'altro. Vedi Testing per il pattern completo.

per navigare per selezionare Esc per chiudere