混合模块和命名空间

时间:2016-09-21 09:18:54

标签: typescript

我有一个使用模块(外部模块)的Angular 2项目,并希望使用一个使用名称空间的库(automapper-ts)。

我如何包含或导入它?我查看了有关模块和命名空间的文档。但是我不清楚如何使用仅在使用模块的项目中使用名称空间的库。

2 个答案:

答案 0 :(得分:1)

如果某个库没有将任何内容导出到UMD,AMD或CommonJS格式,那么您只需加载它(例如使用<script>标记)或从您的加载器/捆绑器中获取它。命名空间将以旧式方式提供:来自全局变量。

为了编译代码,根据您的配置,您必须让编译器找到库的声明文件。 This one, I guess

答案 1 :(得分:0)

虽然该库尚未设计为模块化库,但使用Angular 2+的库并不是很难。我之前在包的GitHub页面上创建了有关此问题的问题时,我已经回答了这个问题:https://github.com/loedeman/AutoMapper/issues/17

为了清晰(和索引),这是我提出的解决方案:

我刚刚使用Angular CI创建了一个基本的Angular应用程序。如果您遵循使用第三方库(https://github.com/angular/angular-cli#3rd-party-library-installation)的指导原则,让AutoMapper正常运行非常容易。摘录:

  1. 使用npm安装automapper-ts库:
    npm install automapper --save
  2. 将以下行添加到文件typings.d.ts:
    declare module 'automapper-ts';
  3. 将automapper-ts缩小的JS文件添加到angular-cli.json中的scripts数组中:
    "../node_modules/automapper-ts/dist/automapper.min.js"
  4. 导入模块/组件文件中步骤2中创建的模块:
    import { } from 'automapper-ts';
  5. 现在您应该能够使用所记录的automapper全局变量。

    Ragarding typing:我发现AutoMapper的package.json缺少package.json中的typings属性。它会在那里很快(肯定会在这篇文章后立即提交),但同时你可以自己添加它,就在主要属性的下方:

    "typings": "./dist/automapper",