2016-07-04 176 views
2

如果有人能夠對TypeScript 1.8模塊進行一些介紹,我將不勝感激。Typescript模塊:定義未定義

我有SomeClass.ts文件:

export class SomeClass { 

} 

,然後在我的app.ts我導入SomeClass的:

import {SomeClass} from "./SomeClass"; 
var xxx = new SomeClass(); 

都與AMD和CommonJS的模塊系統,ES5目標,我建該應用程序,如果我在瀏覽器中打開它,我得到「定義未定義」或「要求未定義」錯誤。

我應該爲此安裝一些額外的庫嗎?

+0

如果你的目標ES5 CommonJS的它應該工作。 – AlexG

+0

你需要實際加載你的頁面中的庫腳本 –

回答

2

將模塊系統設置爲「amd」。 下載requirejs並將其包含在您的HTML中。

<script data-main="scripts/app" src="scripts/require.js"></script> 

注意data-main屬性。它的值是路徑+模塊名稱,在你的情況下是「應用程序」。 Requirejs將獲取你的模塊,所以你不應該把它包含在另一個腳本標籤中。

+0

所以只是要清楚 - 如果我使用帶有導入的typescript模塊,我將永遠必須使用require,對吧?有沒有辦法將所有的項目編譯成單個文件並以舊式的方式使用它?順便說一下,我正在使用Visual Studio。 – zeroin

+1

請參閱basarat的回答。在您指定輸入模塊(在您的案例app.js中)後,Webpack可以生成所有模塊的捆綁包。如果你決定使用webpack,那麼你不需要requirejs。 – Granga

1

我應該爲此安裝一些額外的庫嗎?

是的。但是,您可以輕鬆地將庫與您的項目捆綁在一起。例如。使用commonjs(允許您完美地使用npm),然後使用webpack進行編譯。

更多

快速入門:https://basarat.gitbooks.io/typescript/content/docs/quick/browser.html

+1

謝謝,我會嘗試。不過,我使用的是Visual Studio,希望能夠在沒有這麼長的過程的情況下運行和編譯項目。我也希望能夠得到一個沒有任何依賴的文件,但我想這是不可能的。 – zeroin

+1

@zeroin,是的,這是可能的。這正是webpack所做的。一個包含依賴關係和代碼的大包。 – Granga

+1

@zeroin關於VS的用法:我建議你熟悉** npm **。它的任務可以從cmd或[NPM Task Runner](https://visualstudiogallery.msdn.microsoft.com/8f2f2cbc-4da5-43ba-9de2-c9d08ade4941)等插件運行。如果你決定使用webpack,你需要運行的唯一命令是'webpack'。 – Granga