我通过NPM安装了流行的d3库. npm install d3tsd install d3 -savetsc 在我的home.ts文件中,我导入了模块: 从’d3 / d3’导入*为d3; 这编译正确,但我得到这个语义错误: app / home / components / home.ts(2,2
npm install d3 tsd install d3 -save tsc
在我的home.ts文件中,我导入了模块:
从’d3 / d3’导入*为d3;
这编译正确,但我得到这个语义错误:
app / home / components / home.ts(2,21):错误TS2307:找不到模块’d3 / d3′.
此外,我在IDE中丢失了所有语法高亮/提前输入信息.
TSD提供的原始d3.d.ts文件声明模块如下:
declare module 'd3' { export = d3; }
如果我将模块更改为’d3 / d3′,一切正常:
declare module 'd3/d3' { export = d3; }
所以,我很难得到我需要的东西:
从’d3’导入*为d3;给我我期望的类型定义,但在node_modules / d3.js中查找一个不正确的模块.
从’d3 / d3’导入*为d3;找到正确的模块,因为路径是正确的,但我丢失了我的类型定义,因为模块声明不匹配.
我怎样才能让这两件事情相匹配,这样我就可以简单地导入模块而不会丢失我的类型定义?
仅供参考:我使用的是typescript 1.7.5,我的moduleResolution设置为node.
你需要告诉装载机在哪里寻找东西.在systemjs.config.js中,在地图对象中添加以下映射:var map= { ... ... 'd3': 'node_modules/d3' };
d3.js文件确实位于node_modules / d3中,上面的映射将让加载器找到该文件.现在,您可以将其导入组件中:
import * as d3 from 'd3';