2016-04-21 31 views
2

這是我最初使用TypeScript的經驗。我帶了一個由兩個文件組成的簡單JavaScript應用程序,並將它們轉換爲TypeScript。TypeScript編譯器在WebStorm中創建空的JavaScript文件

一個文件accounts.ts包含主代碼,另一個文件fiat.ts是一個支持文件,該文件用一些導出的成員導出模塊Fiat。經過一些編輯後,我從TypeScript編譯器得到了更多的錯誤信息。

我使用tsconfig.json文件來控制編譯:

{ 
    "compilerOptions": { 
    "module": "commonjs", 
    "noImplicitAny": true, 
    "removeComments": true, 
    "preserveConstEnums": true, 
    "outFile": "main.js", 
    "target": "ES5", 
    "sourceMap": true 
    }, 
    "files": [ 
    "accounts.ts", 
    "fiat.ts" 
    ] 
} 

應該創建一個main.js文件包含的代碼。但這包含成功編譯後只有一行:

//# sourceMappingURL=main.js.map 

沒有其他代碼被包括在內。我發現由事故,如果我刪除行

import {Fiat} from './fiat'; 

accounts.ts文件則編譯器包括accounts.ts代碼分成main.jsfiat.ts不是代碼和附加打字稿編譯器示出了用於每個引用Fiat錯誤消息在accounts.ts

我想不出如何從兩個TypeScript文件創建一個JavaScript文件。任何幫助,將不勝感激!


我在一些研究後發現:Typescript模塊概念可以通過兩種不同的方式來處理:內部模塊和外部模塊。我的困難來自於沒有真正理解這一點。外部模塊使用動態模塊加載程序。你們import他們。只有內部模塊可以通過script標籤集中到一個(或多個)通過HTML加載的Javascript文件中。要使用內部模塊,需要引用它們的文件中的/// <reference path="./name.ts" />行。據我所知,內部和外部模塊之間的其他語法差異較小。

+0

[TypeScript將所有ts文件編譯爲WebStorm 7中的單個JavaScript文件的可能副本](http://stackoverflow.com/questions/21816695/typescript-compile-all-ts-files-as-a-single- javascript-file-in-webstorm-7) –

+0

我看到了,並試圖理解它。那裏的人使用文件觀察者,我直接使用編譯器。可能不會有這麼大的差別,但是編譯器選項在那裏提出的對我的問題沒有任何作用。這似乎是不同的。 –

回答

1

如果你想使用的模塊(外部模塊)和單個文件編譯它們應該設置module目標amdsystem(假設你有1.8 typescript)在tsconfig.json。

通過刪除導入/導出,您不使用模塊,因此outFile的作品。

+0

是的,我看到某處解釋並嘗試了這一點。它導致Javascript代碼不執行。使用'amd'選項時,我會在瀏覽器控制檯中看到「定義未定義」和「系統」「系統未定義」錯誤。 –

+0

你在用什麼裝載機? – Amid

+0

還記得瀏覽器還沒有能力加載模塊 - 你需要使用像systemjs,requirejs等 – Amid

相關問題