使用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