Внедрение зависимостей нового поколения для TypeScript
Компилятор проверяет граф зависимостей. Контейнер быстро получает сервисы и занимает меньше 3 KiB после gzip. Бизнес-логика остаётся обычным кодом TypeScript.
pnpm add @inferdi/inferdi
Получение из кэша начинается с одного Map.get(). При первом создании сервиса режим по умолчанию сохраняет проверки во время выполнения.
Методика и полные результатыМедианы восьми раундов бенчмарка на готовой production-сборке. Измеряются накладные расходы контейнера, а не пропускная способность приложения. .
Каждая регистрация возвращает новый тип контейнера. В нём записаны ключ, значение, время жизни, асинхронная связь и требования скоупа.
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 19Типизированный контекст, Suspense-хуки и управляемые скоупы.
Fastify 5Отдельный типизированный скоуп и освобождение ресурсов после запроса.
Hono 4Типизированные переменные контекста для Workers, Bun и Node.
Koa 3Скоуп запроса следует жизненному циклу middleware.
Express 5Типизированные скоупы для middleware и маршрутов.
Elysia 1Сервисы запроса получают данные с типами, заданными маршрутом.Держите граф в одном месте, где все решения легко увидеть и изменить.