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