2015-10-14 166 views
1

TL; DR打字稿,聲明一個變量與聲明模塊

是什麼意思,當一個變量打字稿聲明?例如(來自TypeScript手冊或wiki):

declare var d3:D3.Base;

這種情況下的目的是什麼?

更多的想法:

據我所知,聲明一個模塊或命名空間指示它是環境溫度,即它不編譯成JavaScript,並且僅用於描述對象的形狀(類型檢查)。但是,變量聲明的目的在於避開我。

的問題出現了,因爲我一直在尋找從絕對類型(angular.d.ts)的角度聲明文件:

declare var angular: angular.IAngularStatic; 

// Support for painless dependency injection 
interface Function { 
    $inject?: string[]; 
} 

// Collapse angular into ng 
import ng = angular; 
// Support AMD require 
declare module 'angular' { 
    export = angular; 
} 

/////////////////////////////////////////////////////////////////////////////// 
// ng module (angular.js) 
/////////////////////////////////////////////////////////////////////////////// 
declare module angular {......module declaration continues.... 

我竭力要弄清楚到底發生了什麼事情在這裏的「導入「和變量聲明。 Visual Studio代碼似乎不喜歡導入,但Visual Studio 2015接受它(都使用TypeScript 1.6.2)。

回答

1

什麼是在這種情況下

環境聲明的目的。主要是爲了支持沒有用TypeScript編寫的庫(和環境變量如window)。

更多:https://basarat.gitbooks.io/typescript/content/docs/types/ambient/intro.html

然而,變量聲明的目的,我摸不透。

某些庫提供了一個全局變量變量。例如。由jquery提供的$

本主題這裏介紹:https://basarat.gitbooks.io/typescript/content/docs/types/ambient/variables.html

我竭力要弄清楚到底是怎麼回事就在這裏與「進口」和變量聲明

import可以用來複制類型(這裏是declare module angular)。

這是覆蓋在這裏tips部分:https://basarat.gitbooks.io/typescript/content/docs/project/declarationspaces.html

+0

感謝您的鏈接到你的書。我一定會看看。很有趣,我正在閱讀語言規範,並在那裏找到了jquery和Window示例:[link](https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#1.1)是「import 「應該以這種方式使用?你爲什麼認爲Visual Studio Code不支持它的用法?錯誤? – jpetitte

+0

'你爲什麼認爲Visual Studio Code不支持它的用法? Bug?'我儘量不花費時間在非OSS項目上...所以誰知道:) – basarat

+0

TypeScript語言規範的「import」部分的用法是什麼?我試圖確定是否應該使用該語法。 – jpetitte