Typescript-导入vs";声明风险值;使用类型定义

Typescript-导入vs";声明风险值;使用类型定义,typescript,Typescript,使用Typescript构建Angular 2应用程序,我正在尝试导入流行的d3库 我已经使用TSD安装了类型定义,并且正确引用了TSD.d.ts文件: // 现在,我想导入我的d3节点模块。它是通过NPM安装的: /// <reference path="../../../tools/typings/tsd/tsd.d.ts" /> import * as d3 from 'd3/d3'; 所以,我的问题是什么是正确的方法?import与declare var有什么区别,如果np

使用Typescript构建Angular 2应用程序,我正在尝试导入流行的
d3

我已经使用
TSD
安装了类型定义,并且正确引用了
TSD.d.ts
文件:

//

现在,我想导入我的d3节点模块。它是通过
NPM
安装的:

/// <reference path="../../../tools/typings/tsd/tsd.d.ts" />
import * as d3 from 'd3/d3';
所以,我的问题是什么是正确的方法?
import
declare var
有什么区别,如果npm模块本身不包含类型定义,那么在使用
import
时,是否有方法获取类型定义


我注意到类似于从'angular2/core'导入{Component}的东西工作正常,但类型定义包含在与我导入的javascript文件相同的目录中。

import*作为“d3/d3”中的d3就可以很好地处理类型系统(没有
//

declare var d3
是如何声明JS中某个地方存在的变量。把它想象成“是的,是的,打字稿,别抱怨了,相信我,它是存在的”

从'angular2/core'导入{Component}是如何从模块中提取特定工件。在节点术语中,这转化为
var Component=require('angular2/core')。组件

启用的重要编译器选项是
“moduleResolution”:“node”
,它应该已经启用,angular2才能正常工作

因此,如果
d3
作为节点单元模块安装,那么您应该能够简单地使用:

npm install d3
tsd install d3
tsc
而且它应该会起作用

如果您使用bower安装了d3,那么您将需要使用模块的相对路径

bower install d3
tsd install d3
然后

//
将*作为d3从“../path/to/d3”导入;
注意:
tsd
已被弃用,取而代之的是
打字
。改用
打字安装d3

此外,如果您有最新版本的typescript和
npm安装--save dev@types/d3
(typescript正式支持这一点,请在
node_modules/@types/..
中查找typedefs,您可以跳过使用
tsd
typings


伙计……typescript已经长大了……:)

你使用的是什么版本的typescript。@JMac我也在尝试让d3使用typescript。你最终成功了吗?你的项目是开源的吗?对于其他第一次使用typescript的人来说(比如我),“tsd”已经被弃用,取而代之的是“typings”,如果我错了,请纠正我。这一步{npm install d3,tsd install d3,tsc}相当于-->npm install@types/d3,然后,导入步骤正确???@Rishi有可能是
d3
@types/d3
的依赖项,这将导致您的场景正常工作。然而,首选的方法可能是
npm install d3
然后
npm install--save dev@types/d3
,这样您就可以将依赖项放在
package.json
的正确位置<代码>@types/d3
在运行时不需要,只在编译时需要,因此您站点的软件包/产品版本的用户不需要额外的文件,因此可以安全地忽略这些文件。
npm install d3
tsd install d3
tsc
bower install d3
tsd install d3
/// <reference path="../path/to/typings/d3/d3.d.ts" />
import * as d3 from '../path/to/d3';