节点的Typecript IOC

sre*_*moh 1 inversion-of-control node.js node-modules typescript

我想知道你将如何使用打字稿IOC专门节点应用程序.

基于外部模块的体系结构的情况下,应用程序中没有任何类.只是纯模块,因为我的应用程序在很大程度上取决于node_modules.

在这种情况下,我如何整合IOC解决方案?有什么想法吗?

以下是我希望使用IOC的具体案例:

我有猫鼬模型:

interface IStuffModel extends IStuff, mongoose.Document { }   

var Stuff= mongoose.model<IStuffModel>('Stuff', Schemas.stuffSchema);

export = Stuff;
Run Code Online (Sandbox Code Playgroud)

和相关的假类:

export class Stuff implements IStuff { 
 //do stuff
}
Run Code Online (Sandbox Code Playgroud)

bas*_*rat 5

在这种情况下,我如何整合IOC解决方案

这是我推荐的一个非常受欢迎的库:https://github.com/inversify/InversifyJS

外部模块

使用外部模块根本不会更改代码.代替

kernel.bind(new TypeBinding<FooBarInterface>("FooBarInterface", FooBar));
Run Code Online (Sandbox Code Playgroud)

生产

你有

import {ProdFooBar} from "./prodFooBar";
kernel.bind(new TypeBinding<FooBarInterface>("FooBarInterface", ProdFooBar));
Run Code Online (Sandbox Code Playgroud)

测试

import {MockFooBar} from "./mockFooBar";
kernel.bind(new TypeBinding<FooBarInterface>("FooBarInterface", MockFooBar));
Run Code Online (Sandbox Code Playgroud)