Dependency Injection der nächsten Generation für TypeScript
Der Compiler prüft den Graphen. Die Auflösung ist schnell, die Laufzeit bleibt unter 3 KiB. Deine Geschäftslogik bleibt gewöhnlicher TypeScript-Code.
pnpm add @inferdi/inferdi
Eine Auflösung aus dem Cache beginnt mit einem Map.get(). Bei kalter Auflösung behält der Standardmodus die Laufzeitprüfungen bei.
Messverfahren und vollständige ErgebnisseMediane des aufgezeichneten Produktionsbenchmarks mit acht Runden. Gemessen wird der Containeraufwand, nicht der Durchsatz der Anwendung. .
Jede Registrierung liefert einen neuen Containertyp. Er hält Schlüssel, Wert, Lebensdauer, asynchrone Kanten und Scope-Anforderungen fest.
import { Container } from '@inferdi/inferdi'
class Logger {
info(message: string) {}
}
class Database {
findUser(id: string) {
return { id }
}
}
class UserRepo {
constructor(readonly logger: Logger, readonly database: Database) {}
}
const container = new Container()
.registerClass('logger', Logger, [])
.registerClass('database', Database, [])
.registerClass('users', UserRepo, ['logger', 'database'])
const users = container.get('users')
React 19Typisierter Kontext, Suspense-Hooks und verwaltete Scopes.
Fastify 5Ein typisierter Scope je Anfrage mit Freigabe im Lebenszyklus.
Hono 4Typisierte Kontextvariablen für Workers, Bun und Node.
Koa 3Request-Scopes entlang des Middleware-Lebenszyklus.
Express 5Typisierte Request-Scopes für Middleware und Routen.
Elysia 1Routenspezifische Typen bis in die Request-Services.Halte den Graphen an einer Stelle, an der seine Entscheidungen leicht zu lesen und zu ändern sind.