2015-09-21 29 views
0

我得到的服務MessageServiceClientMessage<T>類的實現位於同一模塊中。使用TypeScript在AngularJS中導出自定義對象

通過獨立控制器訪問此類的最簡單方法是什麼,該控制器已經注入了MessageService類?

有沒有更接近NodeJS的import service = require('MessageService')解決方案?

這是什麼最佳做法?在一個單獨的文件中定義那些消息相關的模型類,並通過依賴注入來加載它們?

enter image description here

回答

0

在你的代碼你正在使用的舊的語法(module關鍵字)的內部模塊,the new syntax使用namespace關鍵字:

namespace Common.Services { 
// ... 
} 

由於the release of TypeScript 1.5您可以使用新的ES6模塊語法。

在您的示例中,您需要在接口和類之前刪除module Common.Services {部分和export關鍵字。然後在文件的底部,你可以使用:

export { IMessageService, IMessage, ClientMessage, MessageService }; 

然後由獨立的控制器在名爲x_controller.ts文件:

import { MessageService, ClientMessage } from "somefile.ts"; 
var a = new ClientMessage<string>(); 
var b = new MessageService(); 

一旦你遷移你的代碼到ES6模塊語法,如果你正在使用Node.js,您可以使用--module commonjscompiler option將模塊編譯成CommonJS模塊。

您可以瞭解更多關於ES6模塊here的信息。您可以詳細瞭解內部和外部模塊here之間的區別。

+0

太棒了 - 不幸的是,我爲這個項目使用了一個生成器,所以將整個代碼庫推向這個新約定並不那麼容易。 – HansMusterWhatElse

相關問題