Quick Start
In TinyDI non c'è nessun passaggio nascosto. Questa pagina è l'intero modello mentale: crea un container, registra un servizio, risolvilo.
L'esempio
ts
import { Container, createToken, ServiceLifetime } from 'tinydi-container';
interface IClock {
now(): Date;
}
class SystemClock implements IClock {
now(): Date {
return new Date();
}
}
const ClockToken = createToken<IClock>('Clock');
const container = new Container();
container.registerFactory(ClockToken, () => new SystemClock(), ServiceLifetime.Singleton);
const clock = container.resolve(ClockToken);
console.log(clock.now());
Cosa succede qui
createToken<IClock>('Clock')crea un identificatore type-safe. Il generic<IClock>è l'unico punto in cui il tipo viene scritto — tutto il resto lo inferisce.container.registerFactory(...)dice al container come costruire il servizio, in modo lazy, la prima volta che viene richiesto.ServiceLifetime.Singletonè il default e qui potrebbe essere omesso.container.resolve(ClockToken)restituisce il servizio, tipizzato comeIClocksenza generic esplicito.
Nessun decorator, nessuna reflection
Ogni decisione di cablaggio qui sopra è una normale chiamata a funzione che puoi seguire con Cmd+Click. Nulla qui si basa su reflect-metadata, e non c'è alcun flag del compilatore da abilitare.
Prossimi passi
Token
Come funziona il sistema di token type-safe, e perché l'identità è un symbol, non una stringa.
Leggi TokenContainer
Ogni metodo di Container: registerInstance, registerFactory, resolve, has, remove, clear.
Leggi ContainerLifetime
Singleton vs. Transient, e quando scegliere l'uno o l'altro.
Leggi Lifetime