FAQ
TinyDI supporta la constructor injection automatica?
No, per scelta di design. Colleghi tu stesso gli argomenti del costruttore dentro una factory (
(c) => new UserService(c.resolve(UserRepositoryToken))). Questo è il compromesso centrale di TinyDI: più codice esplicito, zero reflection.Posso registrare lo stesso token due volte, per sovrascriverlo?
Non direttamente — una seconda registrazione su un token già registrato lancia
RegistrationError. Chiama prima container.remove(token) (oppure container.clear() per azzerare tutto), poi registra di nuovo. È utile per sostituire le implementazioni nei test.TinyDI supporta i lifetime scoped (per-request)?
Non in questa versione — oggi esistono solo
Singleton e Transient. Il design non preclude intenzionalmente l'aggiunta di un lifetime scoped in futuro, ma non fa parte dell'API attuale.TinyDI supporta i child container?
Non in questa versione. Ogni
Container è completamente autonomo e senza stato globale condiviso, il che lascia aperta la porta a una relazione parent/child in una versione futura, senza richiedere un redesign.TinyDI è legato a Node.js?
No — ha zero dipendenze a runtime e non usa API specifiche di Node, quindi gira senza modifiche su Bun, Deno e nel browser.
Una factory può essere asincrona?
Factory<T> è sincrona per scelta di design ((container: Container) => T). Se devi costruire qualcosa in modo asincrono, risolvi come servizio un valore che restituisce una promise (Token<Promise<T>>) e fai l'await al punto di chiamata — TinyDI al momento non offre un'API di risoluzione asincrona dedicata.