Skip to content

TypeScript のための次世代 Dependency Injection

InferDI依存関係の接続ミスを、 実行前に発見。

コンパイラーが依存グラフを検証。高速な解決と 3 KiB 未満のランタイム。ビジネスロジックは通常の TypeScript のまま。

pnpm add @inferdi/inferdi
< 3 KiBgzip ランタイム
6.23 nsキャッシュからの解決
0ランタイム依存

速さを生む設計。

キャッシュからの解決は 1 回の Map.get() から始まります。デフォルトではコールド解決時のランタイムチェックも維持します。

測定方法と全結果

記録された本番ビルドの 8 ラウンドのベンチマーク中央値。アプリ全体のスループットではなく、コンテナーのオーバーヘッドを測定しています。 .

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

フレームワークアダプター

次のステップ

構成ルートから始める

依存グラフを一か所にまとめると、選択した内容を確認し、変更しやすくなります。