使用Typescript构建Angular 2应用程序,我试图导入受欢迎的d3
库。Typescript - 导入vs“声明var”类型定义
我已经安装使用TSD
类型定义,而我正确地引用tsd.d.ts
文件:
/// <reference path="../../../tools/typings/tsd/tsd.d.ts" />
现在,我想我的import
d3
node_module。它是通过NPM
安装:
/// <reference path="../../../tools/typings/tsd/tsd.d.ts" />
import * as d3 from 'd3/d3';
这工作,但我不从我的类型定义得到任何好处。我的IDE没有提供任何提前输入信息或语法突出显示。如果我将其更改为:
/// <reference path="../../../tools/typings/tsd/tsd.d.ts" />
import * as d3 from 'd3/d3';
我现在可以获得所期望的所有语法突出显示/提前输入定义。然而,我的应用程序正在寻找一个不存在的文件node_modules/d3.js
,所以这显然不起作用。
当我改变我的import语句到var
声明,我的应用程序正确编译和我得到的所有合适的打字稿定义:
/// <reference path="../../../tools/typings/tsd/tsd.d.ts" />
declare var d3 = require('d3/d3');
所以,我的问题很简单什么是正确的做法? import
与declare var
有什么区别,如果import
没有包含在npm模块中,有没有办法获得类型定义?
我注意到像import {Component} from 'angular2/core';
这样的东西可以正常工作,但是类型定义包含在与我导入的JavaScript文件相同的目录中。
您正在使用什么版本的打字稿的。 – SnareChops
@JMac我想让d3与TypeScript一起工作。你最终得到了这个工作吗?你的项目是开源的吗? – Ciwan