【问题标题】:Export a customised object in AngularJS with TypeScript使用 TypeScript 在 AngularJS 中导出自定义对象
【发布时间】:2015-12-18 10:11:04
【问题描述】:

我有服务MessageService,它与ClientMessage<T>类的实现位于同一个模块中。

通过已经注入 MessageService 类的独立控制器访问此类的最简单方法是什么?

是否有更简单的方法更接近 NodeJS 的 import service = require('MessageService') 解决方案?

这方面的最佳做法是什么?在单独的文件中定义那些与消息相关的模型类并通过依赖注入加载它们?

【问题讨论】:

    标签: angularjs dependency-injection model typescript


    【解决方案1】:

    在您的代码中,您对内部模块使用旧语法(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 commonjs compiler option 将模块编译为 CommonJS 模块。

    您可以了解更多关于 ES6 模块的信息here。您可以了解更多关于内部和外部模块之间的区别here

    【讨论】:

    • 太棒了 - 不幸的是,我正在为这个项目使用生成器,因此将整个代码库推向这个新约定并不容易。
    猜你喜欢
    • 2016-12-15
    • 1970-01-01
    • 2012-02-26
    • 2021-09-14
    • 1970-01-01
    • 2017-11-30
    • 2017-06-05
    • 1970-01-01
    • 2021-10-21
    相关资源
    最近更新 更多