工具概況
TypeScript擴展了
JavaScript的語法,所以任何現有的JavaScript程式可以不加改變的在TypeScript下工作。TypeScript是為大型套用之開發而設計,而編譯時它產生 JavaScript 以確保兼容性。
背景
TypeScript 起源於開發應用程式規模的 JavaScript 應用程式的需求。
Microsoft的語言開發者們說內部以及外部的客戶都表示他們構建 JavaScript 代碼的問題。
很多最終依賴於 JavaScript 的開發者通常用編譯為 JavaScript 代碼的另一種語言寫腳本,例如
CoffeeScript 和 Script# (讀作 ScriptSharp)。一個明顯的劣勢是也許無法從那另一種語言使用任何 JavaScript 的具體的語言特性,如果那種語言不支持它的話。
在 Microsoft 內部,它導致了自定義工具以簡化 JavaScript 組件的編寫的需求。
特性
TypeScript 是一種給 JavaScript 添加特性的語言擴展。
●類
●lambda 函式
語法上,TypeScript 很類似於
JScript .NET,另外一個添加了對靜態類型,經典的面向對象語言特性如類,繼承,接口和命名空間等的支持的 Microsoft 對 ECMA-262 語言標準的實現。
類型批註
TypeScript 通過類型批註提供靜態類型以在編譯時啟動類型檢查。這是可選的,而且可以被忽略而使用 JavaScript 常規的動態類型。
對於基本類型的批註是 number, bool 和 string。而弱或動態類型的結構則是 any 類型。
類型批註可以被導出到一個單獨的聲明檔案以讓使用類型的已被編譯為 JavaScript 的 TypeScript 腳本的類型信息可用。批註可以為一個現有的 JavaScript 庫聲明,就像已經為 Node.js 和 jQuery 所做的那樣。
當類型沒有給出時,TypeScript 編譯器利用類型推斷以推斷類型。如果由於缺乏聲明,沒有類型可以被推斷出,那么它就會默認為是動態的 any 類型。
聲明檔案
當一個 TypeScript 腳本被編譯時,有一個產生作為編譯後的 JavaScript 的
組件的一個
接口而起作用的聲明檔案 (具有擴展名 .d.ts) 的選項。在這個過程中編譯器基本上帶走所有的函式和方法體而僅保留所導出類型的批註。當第三方開發者從 TypeScript 中使用它時,由此產生的聲明檔案就可以被用於描述一個
JavaScript 庫或模組導出的虛擬的 TypeScript 類型。
類型聲明檔案可以為已存在的 JavaScript 庫手寫,就像為 jQuery 和 Node.js 所做的那樣。
對 ECMAScript 6 的支持
TypeScript 增加了對為即將到來的 ECMAScript 6 標準所建議的特性的支持。
如下為其構想:
類 (以及繼承) 模組Arrow functions
儘管標準還未準備就緒,Microsoft 說它的目標是使 TypeScript 的特性與建議的標準看齊。
與 JavaScript 的兼容性
TypeScript 是 JavaScript 的一個超集。默認情況下編譯器以 ECMAScript 3 (ES3) 為目標但 ES5 也是受支持的一個選項。一個 TypeScript 套用可以利用已存在的 JavaScript 腳本。編譯後的 TypeScript 腳本也可以從 JavaScript 中使用。
現有框架如 jQuery 和 Node.js 等受到完全支持。這些庫的類型聲明在原始碼中提供。
支持的瀏覽器和平台
運行於任何平台上的任何
網頁瀏覽器都可以運行 TypeScript 由於它僅僅是被編譯為標準的 JavaScript。一個腳本既可以被預編譯為 JavaScript 也可以通過為 TypeScript 包含 JavaScript 編譯器實時編譯。
工具
編譯器
TypeScript 編譯器,名稱叫 tsc, 是用可以被編譯為可以被執行在任何 JavaScript 引擎中,在任何宿主 - 如瀏覽器 - 中的常規 JavaScript 的 TypeScript 寫的。編譯器包被綁定於一個可以執行編譯器的腳本宿主。使用
Node.js 作為宿主的 Node.js 包同樣可以獲得。
也有用 JavaScript 寫的客戶端編譯器的一個 alpha 版本,它在頁面載入時,實時執行 JavaScript 代碼。
這種編譯器的當前版本默認支持 ECMAScript 3。一個選項是允許以 ECMAScript 5 為目標以利用該版本獨有的語言特性。類,儘管是 ECMAScript 6 標準的一部分,在這兩個模式下都可用。
支持
IDE 和編輯器支持
開源
TypeScript 是
開源的,其
原始碼可以在 Apache 2 License 下從
CodePlex 獲得。這個項目由
Microsoft 維持,但是任何人可以通過經 CodePlex 項目頁傳送反饋,建議和 bugfixes 而做出貢獻。
已有一些批評提到這一想法,即使 TypeScript 鼓勵
強類型,當前也只有
Microsoft Visual Studio 允許為該語言容易的開發。最初的觀點是在其它的編輯器上帶來強類型,
IntelliSense, 代碼完成和
代碼重構可能不是一個簡單的任務。此外,允許為 TypeScript 開發的 Visual Studio 擴展不是開源的。最好的 TypeScript 開發體驗是在
Microsoft Windows 上,然而隨著時間的流逝以及這種語言開放的本質,加之編譯器自我託管,而且用 TypeScript 自身寫的,這很有可能會改變。可以通過編譯器的原始碼訪問到 AST (抽象句法樹),也可以獲得詳細的語言規範文檔,社區已開始構建一個跨平台的編輯器,利用和 Visual Studio 所用相同的語言服務以提供一個增強的編輯體驗。編輯器仍然在概念檢驗的階段,但已經運行於 Linux, OSX 和 Windows,提供針對之前對提供此類服務的困難度的估計的 IntelliSense, 代碼完成和句法高亮。
發布
2013年6月19日,在經歷了一個預覽版之後
微軟正式發布了正式版TypeScript 0.9,向未來的TypeScript 1.0版邁進了很大一步。
TypeScript 0.9迎來了一些重大的新功能,除對語言本身特性進行了擴充之外,還更加完善地整合了
Visual Studio,
微軟開發部副總裁Soma Somasegar發布帖子稱,新版本的TypeScript在互動式性能方面有了顯著的提高和改善。
與JavaScript相比,TypeScript進步的地方包括:加入注釋,讓編譯器理解所支持的對象和函式,編譯器會移除注釋,不會增加開銷;增加一個完整的類結構,使之更像是傳統的
面向對象語言。