This page is also available in English.

Continue in English

Lifetime

TinyDI supporta esattamente due lifetime, tramite l'enum ServiceLifetime. Non c'è una terza opzione, né rilevamento automatico — dichiari tu il lifetime che vuoi.

ts
enum ServiceLifetime {
  Singleton,
  Transient,
}

Singleton

Il default. La prima volta che un token viene risolto, la sua factory viene eseguita una volta sola; ogni chiamata successiva a resolve() per lo stesso token restituisce la stessa istanza.

ts
container.registerFactory(ClockToken, () => new SystemClock()); // Singleton di default
 
container.resolve(ClockToken) === container.resolve(ClockToken); // true

registerInstance è sempre Singleton — stai passando al container un'istanza già esistente, quindi non potrebbe essere altro.

Transient

Viene creata una nuova istanza ad ogni chiamata a resolve().

ts
container.registerFactory(RequestIdToken, () => crypto.randomUUID(), ServiceLifetime.Transient);
 
container.resolve(RequestIdToken) === container.resolve(RequestIdToken); // false

Come scegliere

Nessun lifetime Scoped, per ora

Questa versione include deliberatamente solo Singleton e Transient. Un futuro lifetime Scoped (istanze per-request) è un'estensione naturale che il design non preclude, ma non fa parte dell'API attuale.

per navigare per selezionare Esc per chiudere