1

我有一个带有不同外部模块的 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);
4

1 回答 1

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 文件输出 - 如果您使用的是模块加载,那并不是真正相关的。您的模块加载器处理在运行时获取文件。

于 2012-12-17T11:48:35.977 回答