如何将ts代码编译为' require([' somemodule'])

时间:2016-06-21 07:12:57

标签: javascript typescript amd commonjs

如果ts导出代码总是编译为定义调用,我很困惑,比如

define['somemodules',function(module1){
    //code
}]

我想获得像

这样的javascript代码
require['somemodules',function(module1){
    //code
}]

这样代码就会在加载js文件后立即运行。

我的tsc配置

{
    experimentalDecorators: true,
    emitDecoratorMetadata: true,
    target: "ES5",
    module: "amd",
    emitError: false,
    outFile: filename
}

和我的代码

import {BaseViewModel} from '../tinyts/Core';
import {AdminService} from '../services/admin';

export class AdminModel extends BaseViewModel {

    RegisterEvents() {

    }

    OnValidateError() {

    }

    OnLoad() {
        var adminService = new AdminService();
        var data = {
            Pagesize: 10,
            Page: 1,
        }
        adminService.GetData(data, this);
    }

    LoadData(data) {
        console.log(data);

    }

}

更新
在我的问题上,我在浏览器中使用已编译的javascript代码。所以我需要amd modules.now我编译的js文件是这样的:

define("module1",["require", "exports"],function(require,exports){
    //module1 code
}

define("module2",["require", "exports","module1"],function(require,exports,m1){
    //module2 code
}

define("module3",["require", "exports","module2"],function(require,exports,m2){
    //module3 code
    //and i want the module3 code will be executed once this file is loaded.
    var Module3 = function(){
    };
    exports.module3 = Module3;
}  

现在我必须编写另一个这样的脚本来执行上面的代码

require(["module3"],function(m3){
    var mInstance = new m3.module3();
});  

我有refrenced requirejs

1 个答案:

答案 0 :(得分:1)

tsconfig.json更改此行:

module: "amd"

module: "commonjs"

require()函数是Node.js主要使用的CommonJS规范的一部分,因此您必须告诉TS编译器编译到该规范。