Skip to content

面向 TypeScript 的新一代依赖注入

InferDI依赖连接错误, 运行前就发现。

编译器检查依赖图,快速解析依赖,运行时小于 3 KiB。业务逻辑仍是普通 TypeScript。

pnpm add @inferdi/inferdi
< 3 KiBgzip 运行时大小
6.23 ns缓存解析
0运行时依赖

快,源于设计。

缓存解析从一次 Map.get() 开始。默认模式保留冷解析时的运行时检查。

方法与完整结果

记录的八轮生产构建基准测试中位数。衡量容器开销,而非应用吞吐量。 .

TypeScript 能看到完整的依赖图

每次注册都会返回一个新的容器类型,其中记录了键、值、生命周期、异步边和作用域要求。

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

框架适配器

下一步

从组合根开始

将依赖图集中在一个地方,让所有选择都易于查看和修改。