TypeScript包含流程

时间:2016-02-09 03:42:37

标签: javascript angular typescript systemjs amcharts

我正在尝试使用SystemJS在TypeScript和Angular 2中正确包含第三方模块。在这种情况下,第三方库恰好是amCharts,但可能这可能是任何库。

这是我目前正在做的事情(并且有效):

  • 使用npm
  • 安装库
  • 将其加载到我的index.html布局:

的index.html:

<script src="node_modules/amcharts3/amcharts/amcharts.js"></script>
<script src="node_modules/amcharts3/amcharts/serial.js"></script>
  • 然后我只是在我的组件中使用它:

组件:

export class GraphComponent {
  ngOnInit() {
    AmCharts.makeChart(...); // draw chart
  }
}

这很有效,我的图表呈现得很好,但是我的TypeScript编译器(在Atom中)抱怨它&#34; [c]没有找到名字&#39; AmCharts&#39;&#34;在我的组件文件中。这是有道理的,因为我从未在该文件中声明它。包括两个脚本只是使名称全局可用。

有些东西让我觉得我真正应该做的是

  1. 以某种方式利用SystemJS,以便不在我的index.html
  2. 中手动包含脚本
  3. 使用TypeScripts import语句加载库而不是依赖于全局变量
  4. 有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

声明文件(* .d.ts)为JavaScript代码中的结构提供TypeScript声明。最好看的地方是DefinitelyTyped,你可以找到AmCharts here的声明文件。

您可以通过添加引用它的行来告诉转换器有关声明文件:

/// <reference path="AmCharts.d.ts" />