Skip to content

Inyección de dependencias de nueva generación para TypeScript

InferDIDetecta errores de conexión antes de ejecutar.

Grafos de dependencias verificados por el compilador. Resolución rápida. Un runtime de menos de 3 KiB. Tu lógica de negocio sigue siendo TypeScript normal.

pnpm add @inferdi/inferdi
< 3 KiBruntime con gzip
6.23 nsresolución en caché
0dependencias de runtime

Rápido por diseño.

Una resolución en caché empieza con un Map.get(). El modo predeterminado conserva las comprobaciones en runtime para la resolución en frío.

Metodología y resultados completos

Medianas del benchmark registrado de ocho rondas con build de producción. Mide el coste del contenedor, no el rendimiento total de la aplicación. .

TypeScript ve el grafo completo

Cada registro devuelve un tipo de contenedor nuevo que guarda su clave, valor, tiempo de vida, enlace asíncrono y requisitos de scope.

ts
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')
const users: UserRepo

Adaptadores para frameworks

Siguiente paso

Empieza por la raíz de composición

Mantén el grafo en un solo lugar para que sus decisiones sean fáciles de leer y cambiar.