如何编写相同的自定义模块并导入其他模块?

时间:2015-12-07 15:19:00

标签: typescript requirejs

在vs.net 2013中使用TypeScript时,我正在编写相同的自定义模块m1文件:

MyClass1.ts:

module m1{
  export class MyClass1{
    test1(){
    }
  }
}

MyClass2.ts:

/// <reference path="MyClass1.ts" />
import Flux = require("flux");
module m1{
  class MyFluxDispatcher extends Flux.Dispatcher<any>{
    ...
  }
  export class MyClass2{
    test2(){
      var c1 = new m1.MyClass1();   <--- Error 81 Property 'MyClass1' does not exist on type 'typeof m1'.
    }
  }
}

如何在多个文件中编写相同的自定义模块并导入其他模块? 我将使用requirejs:

main.js:

import m1 = require("m1");
var a1 = new m1.MyClass2();
...

in html:

<script src="~/Scripts/require.js" data-main="/js/main.js"></script>

1 个答案:

答案 0 :(得分:0)

当使用commonjs / require时,以你自己的方式使用模块是没用的,因为每个文件都是自己的“模块”。需求网站上有一个关于CommonJS的部分,您可以在这里阅读更多相关信息。还要了解更多关于CommonJS的信息,因为它与需求和打字稿的工作方式密切相关。

做这样的事情对你来说应该更好:

MyClass1.ts

export default class MyClass1 {
    test1() {

    }
}

MyClass2.ts

import MyClass1 from "./MyClass1.ts";

export default class MyClass2 {
    test2() {
        var c1 = new MyClass1();
    }
}

如果您搜索它,有很多关于此的信息,一个好的起点是查看CommonJS和RequireJS,并了解它是如何工作的。希望这有帮助,如果您有任何疑问,请回到mi。