tsrying

tsrying 简介

tsrying 是typescript上一款依赖注入工具

优点:使用注解,可以快速实现依赖项的注入。
缺点:大量依赖注入代码还是需要硬编码,没有JAVA Spring提供的基于注解自动注入功能完善。代码侵入性很高。注解的使用,需要在程序入口处引用import "reflect-metadata";

tsrying 使用

  1. 常用的对象,container, singleton, inject, injectable等。其中singleton,injecttable用于类注解,inject用于构造函数中参数的注解。container是注入构造器。
1
2
3
4
5
6
7
8
9
10
11
12
13
import {injectable} from "tsyringe";

@injectable()
class Foo {
constructor(private database: Database) {}
}

// some other file
import "reflect-metadata";
import {container} from "tsyringe";
import {Foo} from "./foo";

const instance = container.resolve(Foo);
1
2
3
4
5
6
7
8
9
10
11
12
13
import {singleton} from "tsyringe";

@singleton()
class Foo {
constructor() {}
}

// some other file
import "reflect-metadata";
import {container} from "tsyringe";
import {Foo} from "./foo";

const instance = container.resolve(Foo);
1
2
3
4
5
6
7
8
9
10
import {injectable, inject} from "tsyringe";

interface Database {
// ...
}

@injectable()
class Foo {
constructor(@inject("Database") private database?: Database) {}
}
1
2
3
container.register<Foo>(Foo, {useClass: Foo});
container.register<Bar>(Bar, {useValue: new Bar()});
container.register<Baz>("MyBaz", {useValue: new Baz()});