我不知道是否有可能有一個「導出模塊」跨多個文件傳播。如何在多個AMD文件中傳播模塊?
如果我有文件Contact.ts:
// file Contact.ts
export module Contacts {
export class Contact {
...
}
}
和另一ContactView.ts
// file ContactView.ts
export module Contacts {
export class ContactView {
model: Contact; // <--- is not recognized
}
}
然後TSC是不承認的聯繫類。正如你所看到的,Contact和ContactView被聲明爲駐留在同一個模塊中,並且根據規範它應該工作。
我正在構建一個使用require.js和AMD模式的複合應用程序,所以我必須使用「導出模塊」聲明。
我應該做某種類型的「提前聲明」還是一些棘手的「導入」?
感謝您的意見。
編輯:目前我通過導入分別加載每個模塊,但是,如果您會注意到,它會造成代碼和大量「導入」依賴項的巨大浪費。 我的問題是如果有一種方法使用相同的名稱空間(即聯繫人)讓我知道我不打算導入的TS。 我正在尋找正常的//命令,但它不起作用。我甚至嘗試過* .d.ts聲明文件,目前爲止沒有成功。
這正是我現在所做的 - 通過導入單獨加載每個模塊,但是,如果您注意到,會造成代碼和數百個依賴關係的巨大浪費。 我的問題是如果有一種方法使用相同的名稱空間(即聯繫人)讓我知道我不打算導入的TS。 我正在研究正常的//命令,但它不起作用。 –
IgorM
在這種情況下,不要導出模塊Contacts,只需在所有文件中將其定義爲'module Contacts {...}',使用/// (這適用於內部模塊)來幫助TS找到它們,併爲AMD模塊創建一個新文件,該文件只有'export var contacts = Contacts';在它中,所以你可以通過AMD加載整個東西。你必須確保你輸出的var與模塊的名字不一樣,否則發出的代碼將不起作用。我不能遺憾地爲此編寫代碼演示,但如果需要的話,我可以稍後再做。 –
nxn
再想一想,您可能需要創建一個makefile,將每個模塊輸出到它自己的js文件中。 – nxn