我有一个带有不同外部模块的TypeScript项目。例如,我使用以下语句导入模块,它可以正常工作
import myExternalModule = module("http://mylocalapphost/tsmodules/mod1");
var myObject = new myExternalModule.importedInteface('var1', 'var2');
当我将带有tsc的.ts转换为.js时,我只得到了这个:
var myExternalModule = require("http://mylocalapphost/tsmodules/mod1");
但是我需要在这个.js文件中实现模块,就像内部模块一样。我该怎么办?
这是两个文件(抱歉命名不好......):
// 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);
答案 0 :(得分:3)
如果您正在加载外部模块,而不是您有TypeScript代码文件或定义的模块,则最好声明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');
没有那么不同 - 但你可以选择在TypeScript中为代码添加输入,而不是让它纯粹是动态的!
关于单个JS文件输出 - 如果使用模块加载,那不是真正相关的。您的模块加载器处理在运行时获取文件。