2012-12-17 62 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

相關問題