TypeScript D3 v4 导入不起作用

2024-04-16

我正在尝试在 D3 之上构建一个小型 JS 库来绘制折线图。我对整个场景相当陌生,但我认为跳入“深渊”是最好的学习方式。

这是我的内容package.json

{
  "name": "d3play02",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "d3-array": "^1.0.1",
    "d3-axis": "^1.0.3",
    "d3-request": "^1.0.2",
    "d3-scale": "^1.0.3",
    "d3-selection": "^1.0.2",
    "d3-shape": "^1.0.3",
    "d3-time-format": "^2.0.2",
    "rollup": "^0.36.3",
    "rollup-plugin-node-resolve": "^2.0.0",
    "uglify-js": "^2.7.4"
  },
  "dependencies": {
    "@types/d3": "^4.2.37"
  }
}

我有一个名为LineChart.ts在那里我有:

/// <reference path="node_modules/@types/d3/node_modules/@types/d3-request/index.d.ts" />
import csv from 'd3-request';

class LineChart {
    data(url: string): DsvRequest {
        // code to go here
    }
}

但这给了我一个错误

它抱怨找不到d3-request模块,但我已经安装了该模块,并且根据我读过的内容,我正确导入了!


与 d3 相关的 npm 安装应如下所示:

如果您打算仅使用模块的子集,则需要为每个模块安装模块本身和相应的定义文件。

E.g.: npm install d3-array --save and npm install @types/d3-array --save实际的 d3 数组模块将是一个正确的依赖项(而不是上面代码片段中显示的 devDependency)。 @types 的定义可能是--save or --save-dev这取决于您的用例(对于其他代码使用的库,应使用适当的依赖项)

当您想要通过模块加载器使用 D3 模块时,您可以导入标准 TypeScript 语法:

import * as  d3Array from 'd3-array';
import {select, Selection} from 'd3-selection';

或者类似的,取决于您的需求。

为了方便起见,您可以创建一个简单的“捆绑”模块,以便您可以以更统一的形式访问自定义捆绑包:

// d3-bundle.ts
export * from 'd3-array';
export * from 'd3-axis';
...
export * from 'd3-time-format';

您可以根据需要定制此模块,包括使用以下命令仅重新导出各个模块的成员子集export {...} from 'd3-MODULE';

在您现在想要使用 D3 的任何模块中,您都可以使用适当的相对路径导入“d3-bundle”,并且您将可以访问通过捆绑桶放入的内容:

// use-d3.ts
import { csv, DsvRequest } from './d3-bundle'; // again, use the right relative path for your project

class LineChart {
  data(url: string): DsvRequest {
      // code to go here
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeScript D3 v4 导入不起作用 的相关文章

随机推荐