简体   繁体   English

使用TypeScript导入类中的对象

[英]Import object in class using TypeScript

I am new to Javascript and TypeScript and I am wondering if it is possible to do some kind of dependency injection (maybe using require.js) 我是Javascript和TypeScript的新手,我想知道是否可以进行某种依赖注入(也许使用require.js)。

I have two classes in same module 我在同一模块中有两个班

module MyWebApp {
    export class ViewRouter {
           ... some class methods
    }
}

module MyWebApp {
    export class MyViewModel{
        private router: ViewRouter;

        constructor(router:ViewRouter router) {
           this.router = router;
        }
    }
}

Every time I need MyViewModel I have to instantiate ViewRouter var vm = new MyViewModel(new ViewRouter()); 每次需要MyViewModel时,都必须实例化ViewRouter var vm = new MyViewModel(new ViewRouter());

Is there any way around this? 有没有办法解决? I thought that Require.js could help me solve my problem but I don't know how to use it with TypeScript. 我以为Require.js可以帮助我解决问题,但是我不知道如何在TypeScript中使用它。

Thank you. 谢谢。

If you want a new instance every time you should probably do: 如果您每次都想要一个实例,则可能应该这样做:

class MyViewModel{
    private router: ViewRouter;

    constructor() {
       this.router = new ViewRouter();
    }
}

Now if you want a "single" shared instance you can do: 现在,如果您想要一个“单个” 共享实例,则可以执行以下操作:

module MyWebApp {
    export class ViewRouter {
           ... some class methods
    }

    export var router = new ViewRouter();       
}

and use router 并使用router

Using RequireJS can do the same thing for your, but the principal idea will not change there. 使用RequireJS可以为您做同样的事情,但是原理不会改变。 RequireJS is not an IOC container. RequireJS不是一个IOC容器。

There are bunch of javascript IOC containers out there and I don't have a recommendation on that : Google search 那里有很多javascript IOC容器,对此我没有建议: Google搜索

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM