我有一个使用d3库的应用程序。在TypeScript代码中,为了成功使用d3(即避免编译器错误TS2686,因为d3引用了UMD全局变量,但当前文件是模块),我必须包含以下行:import * as d3 from 'd3';
问题是这会在JavaScript中发出:require('d3');
。这并不是我们应用程序中d3库的位置。它位于Web应用程序的根目录下,名为“d3”的目录中。而且,我根本不需要它出现在JavaScript中,因为我们的index.html已将其作为全局加载。
我很难弄清楚如何使TypeScript源码允许我引用d3,而无需导入它。
d3
作为全局变量使用,而不是作为模块。首先,为什么不将其作为模块使用(例如使用npm
安装)?如果你想从模块内部作为全局变量使用 D3,我认为你需要手动将其声明为全局变量。 - Aaron Bealld3.selectAll(...)
之类的操作了。我安装了d3 typings,它们位于node_modules/@types下,由npm install放置在那里。d3的index.d.ts将d3声明为一个命名空间。编辑器中已经解决了所有问题,但是在引用d3时会出现错误。但是,在编辑时,TypeScript环境已知d3声明的所有内容。 - rdiddly