2012-12-17 40 views
1

我有一个带有不同外部模块的TypeScript项目。例如,我导入与下面的语句的模块,它工作Typescript - 加载外部模块并转换为单个JS文件

import myExternalModule = module("http://mylocalapphost/tsmodules/mod1"); 
var myObject = new myExternalModule.importedInteface('var1', 'var2'); 

当我转换的.ts与TSC到.js文件,我只得到这样的:

var myExternalModule = require("http://mylocalapphost/tsmodules/mod1"); 

但我需要在这个.js-File中执行模块,就像内部模块一样。我该怎么做?


这是两个文件(坏命名对不起......):

// mod1.ts (at a local server) 
export class importedClass { 
    private prVar: number = 0; 
    constructor(public var1: string, public var2: string){} 
    public func1(km: number){ 
    this.prVar += km; 
    } 
    public getPrVar(){ 
    return this.prVar; 
    } 
} 

// main.ts 
import myExternalModule = module(" path to mod1 "); 
var myObject = new myExternalModule.importedClass('string var1', 'string var2'); 
myObject.func1(20); 

至于结果我想一个的.js文件带所有导入模块/班等等,因为应用运行在服务器上(没有连接到本地服务器,模块放置在哪里),如下所示:

var importedClass = (function() { 
    function importedClass(var1, var2) { 
     this.var1 = var1; 
     this.var2 = var2; 
     this.prVar = 0; 
    } 
    importedClass.prototype.func1 = function (km) { 
     this.prVar += km; 
    }; 
    importedClass.prototype.getPrVar = function() { 
     return this.prVar; 
    }; 
    return importedClass; 
})(); 
var myObject = new importedClass('string var1', 'string var2'); 
myObject.func1(20); 

回答

3

如果您加载外部模块,不是说你有一个打字稿代码文件或定义模块,你最好在声明require功能和加载它是这样的:

declare var require: any; 

var myExternalModule = require("http://mylocalapphost/tsmodules/mod1"); 
var myObject = new myExternalModule.importedInteface('var1', 'var2'); 

这将导致以下JavaScript的:

var myExternalModule = require("http://mylocalapphost/tsmodules/mod1"); 
var myObject = new myExternalModule.importedInteface('var1', 'var2'); 

没有什么不同 - 但你可以任选在打字稿添加打字代码而不是它纯粹是动态的!

关于有一个单一的JS文件输出 - 如果你使用模块加载,这是不相关的。您的模块加载器可以在运行时获取文件。

+0

我认为我的问题不清楚。我在外部文件中有一些模块(例如在本地主机上),并且我想在.js文件中导入模块,因为应用程序不应该在运行时加载模块。 – user1829815

+1

在这种情况下,我会使用'/// <引用...'而不是导入语句,因为导入语句用于在运行时加载。通过引用,你可以捆绑脚本或者让TypeScript编译器捆绑它们:'tsc --out combined.js File1.ts File2.ts' – Fenton

相关问题