tsrying 简介
tsrying 是typescript上一款依赖注入工具
优点:使用注解,可以快速实现依赖项的注入。
缺点:大量依赖注入代码还是需要硬编码,没有JAVA Spring
提供的基于注解自动注入功能完善。代码侵入性很高。注解的使用,需要在程序入口处引用import "reflect-metadata";
tsrying 使用
- 常用的对象,
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) {} }
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() {} }
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()});
|