javascript - typescript 中的 'd3 和 'd3-hexbin' 作为全局库

标签 javascript typescript d3.js

因此,我使用 d3d3-hexbin 作为全局库:

<script src="https://d3js.org/d3.v4.min.js"></script>
<script src="https://d3js.org/d3-hexbin.v0.2.min.js"></script>

... 并在 .ts 中将它们引用为:

/// <reference types="d3" />
/// <reference types="d3-hexbin" />

... 使用 DefinitelyTyped定义。然而,尽管这有效:

const svg = d3.select('#hitmap').append('svg')

...这个:

const hexbin = d3.hexbin().radius(binsize + 1)

...失败并显示:

Property 'hexbin' does not exist on type 
  'typeof "/Users/bytter/node_modules/@types/d3/index"'

想法?

最佳答案

即使您有 d3 的类型,您也没有 d3-hexbin 的派生类型。所以你必须回到 declare 方法,就像我在这里为 d3-cloud 所做的那样:Typings for d3-cloud

基本上,您必须遵循的步骤如下:

  1. 像往常一样导入 d3 库,但给它一个别名:import * as D3 from 'd3';(注意:D3 为大写 D)

  2. declare d3 再次用于 hexbin:declare let d3: any;

  3. D3 用于与父 d3 库有关的所有内容,将 d3 单独用于 hexbin 生成。

const svg = D3.select('#hitmap').append('svg');

const hexbin = d3.hexbin().radius(binsize + 1);

这将阻止编辑器显示特定于 hexbin 的建议,并且 Typescript 将无法捕获特定于 hexbin 的类型错误。但不幸的是,在 hexbin 的官方打字到达之前,这是我找到的最好的方法。

关于javascript - typescript 中的 'd3 和 'd3-hexbin' 作为全局库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45805742/

相关文章:

javascript - JS : Initialize & push to multi-dimensional array in a single line of code? 创建树结构

javascript - 遍历两个(不同长度的)数组以产生交替输出

variables - TypeScript 'let' 变量和异步调用

javascript - 当包含在支持 Typescript 的 Vue.js 项目中时,Vuetify 停止工作

javascript - 如何在 D3.js 中将颜色与数据绑定(bind)?

javascript - 外来对象文本未出现

javascript - AMD/Dojo 1.7 单页应用程序 : Where to put the Require()'s?

javascript - Node.js 正在捉弄我。使用数组生成随机名称和推文

javascript - 查找最后一次匹配出现的索引

javascript - D3 为单个 json 生成多个图