打字稿和d3

时间:2018-01-17 16:38:32

标签: typescript d3.js

我有一个使用d3库的应用。在打字稿代码中,为了成功使用d3(即,没有编译器错误TS2686,d3指的是UMD全局,但当前文件是模块),我必须包括以下行: import * as d3 from 'd3'; 问题在于它发出: require('d3'); 在JavaScript中。这不是d3库在我们的应用程序中的位置。它位于Web应用程序的根目录下,名为' d3'。另外,我根本不需要它,因为我们的index.html将它作为全局加载。 很难搞清楚如何获取TypeScript源以允许我在没有导入的情况下引用d3。

1 个答案:

答案 0 :(得分:6)

模块文件中的

Currently UMD typedefs can't be referenced as a global namespace。 (它只允许您从非模块文件引用全局命名空间。)workaround是在项目中手动声明全局命名空间:

// global.d.ts
import * as _d3 from "d3";

declare global {
  const d3: typeof _d3;
}

现在,您可以在不从d3导入的情况下从模块中引用"d3",并且仍然应该基于d3@types/d3对象进行所有正确的类型检查。