javascript - typescript 导入 d3 和 d3-force-attract

标签 javascript typescript d3.js

我安装了 D3 和 d3-force-attract

npm install @types/d3 -S
npm install -S d3-force-attract

试图弄清楚 import d3 如何强制吸引进来,因为它不是 typescript 模块,但 d3 是。

这是错误的

import * as d3 from 'd3';
import * as d3 from  'd3-force-attract';

报错如下

src/Program.ts(4,13): error TS2300: Duplicate identifier 'd3'.
src/Program.ts(4,22): error TS7016: Could not find a declaration file for module 'd3-force-attract'. '/.../node_modules/d3-force-attract/dist/d3-force-attract.js' implicitly has an 'any' type.

最佳答案

这里的问题是:

import * as d3 from 'd3';//all modules will be in d3

上面的行没问题,但是下面的行将 d3-force-attract 中的所有模块存储到 d3 中,这是错误的(您已在上面分配了它)

import * as d3 from  'd3-force-attract';

而是这样做:

import * as d3 from 'd3';
import * as d3force from  'd3-force-attract';//give it someother name like d3force.

另外一点

我建议您不要导入完整的模块,而是选择性地导入您想要的模块。

示例:

从'd3-force-attract'导入{forceAttract}

这只会从 'd3-force-attract' 导入 forceAttract,因此如果您通过 webpack 构建,它只会将 forceAttract 导入到缩小的构建中。

关于javascript - typescript 导入 d3 和 d3-force-attract,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49714234/

相关文章:

javascript - 当用户单击按钮并到达底部或顶部时禁用按钮

javascript - 如何通过 jQuery 选择使用 javascript 动态生成的innerHTML 元素

javascript - 如何在javascript中检查< 2和> 4复选框

mysql - 如何将 Sequelize 关联添加到模型中

Angular 11 - 验证 for 循环中生成的子表单

javascript - 条形图中的条形被挤在一起

javascript - 如何将多个 D3 转换命令拆分为单独的语句

javascript - C3.js x 轴显示所有其他类别

javascript - Sails.js 应用程序变量数据未显示在 View 中,即使日志显示它

json - 如何忽略 Angular7 中的对象字段