当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 将typescript定义模块声明与节点模块导入相匹配

来源:互联网 收集:自由互联 发布时间:2021-06-16
我通过NPM安装了流行的d3库. npm install d3tsd install d3 -savetsc 在我的home.ts文件中,我导入了模块: 从’d3 / d3’导入*为d3; 这编译正确,但我得到这个语义错误: app / home / components / home.ts(2,2
我通过NPM安装了流行的d3库.

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';
网友评论